模仿兩個(gè)人在使用eclipse svn開發(fā)
模仿兩個(gè)人在使用eclipse svn開發(fā)
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203
馬克-to-win:現(xiàn)在我們模仿兩個(gè)人在使用eclipse svn開發(fā)
1)先是工程師wanzi修改HelloWorld.java【1)添加一行且刪除一行,2)刪除3行,3)加了一個(gè)回車】,工程師mark將來也要修改這個(gè)文件。wanzi單獨(dú)修改web.xml,添加 HelloWorldWanzi.java.刪除MANIFEST.MF文件。
馬克-to-win:右擊你的項(xiàng)目,team/與資源庫(kù)同步,于是打開了本個(gè)項(xiàng)目的team synchronizing視圖。雙擊你的HelloWorld.java,出現(xiàn)了兩個(gè)文件比較的局面。自己找找,左上角有很多圖標(biāo),比如 incoming mode是只顯示服務(wù)器上的變化,而outgoing mode(我們截圖就是這種模式)是只顯示我們本地剛做的文件變化。截圖中黑加箭頭就是比服務(wù)器多出的文件。黑減箭頭就是比服務(wù)器少的文件。黑色箭頭就是相比服務(wù)器來講,有改變的文件。
完成了編輯以后,下一步,右擊你的項(xiàng)目,team/提交
打開svn console,可以看到輸出結(jié)果:
add -N D:\eclipseJee\testWeb\build
A D:/eclipseJee/testWeb/build
add -N D:\eclipseJee\testWeb\src\test\HelloWorldWanzi1.java
A D:/eclipseJee/testWeb/src/test/HelloWorldWanzi1.java
commit -m "wanzi change 5" D:/eclipseJee/testWeb/src/test/HelloWorldWanzi1.java D:/eclipseJee/testWeb/src/test/HelloWorld.java D:/eclipseJee/testWeb/WebContent/WEB-INF/web.xml D:/eclipseJee/testWeb/WebContent/META-INF/MANIFEST.MF D:/eclipseJee/testWeb/build
Deleting D:/eclipseJee/testWeb/WebContent/META-INF/MANIFEST.MF
Sending D:/eclipseJee/testWeb/WebContent/WEB-INF/web.xml
Adding D:/eclipseJee/testWeb/build
Sending D:/eclipseJee/testWeb/src/test/HelloWorld.java
Adding D:/eclipseJee/testWeb/src/test/HelloWorldWanzi1.java
Transmitting file data ...
Committed revision 5.
成功提交以后,我們看一下team synchronizing視圖,里面會(huì)說no changes in svn(testWeb)。表名你的eclipse和svn版本一模一樣。
馬克-to-win:2)工程師mark現(xiàn)在正在他的機(jī)器上也同時(shí)修改這個(gè)項(xiàng)目,他不知wanzi已經(jīng)提交(而且為了試驗(yàn)效果,wanzi還改動(dòng)提交好幾次,所以版本都到了12)。他會(huì)修改HelloWorld.java,。之后他想commit。提交前,他先右擊他的項(xiàng)目,team/與資源庫(kù)同步,于是打開了本個(gè)項(xiàng)目的team synchronizing視圖。我們先看一下incoming/outgoing mode,這種模式包含所有的改變。
馬克-to-win:左箭頭加表示服務(wù)器比本地多的。藍(lán)色左箭頭表示服務(wù)器有修改而你沒動(dòng)過這個(gè)文件。而紅色箭頭表示沖突,表示你和服務(wù)器都改動(dòng)過文件,(千萬(wàn)注意不見得你和服務(wù)器改的是同一行,也許你改1行,他改10000行)。當(dāng)有沖突時(shí),commit all outgoing changes按鈕是灰色的,只有update all incoming changes按鈕是可點(diǎn)的。
正常情況下,即,你的項(xiàng)目組水平都很高的情況下,我們接受你的組員的東西,則先update,把wanzi的上傳到服務(wù)器端的東西先update下來。再結(jié)合上mark自己的東西(commit到服務(wù)器上去)(這也是公司通常的做法)。
好,正式操作,點(diǎn)擊上圖update按鈕
update C:/Documents and Settings/dell/eclipse-workspace/testWeb2 -r HEAD --force
D C:/Documents and Settings/dell/eclipse-workspace/testWeb2/WebContent/META-INF/MANIFEST.MF
G C:/Documents and Settings/dell/eclipse-workspace/testWeb2/WebContent/WEB-INF/web.xml
C C:/Documents and Settings/dell/eclipse-workspace/testWeb2/src/com/HelloWorld.java
A C:/Documents and Settings/dell/eclipse-workspace/testWeb2/src/com/HelloWorld1.java
E C:/Documents and Settings/dell/eclipse-workspace/testWeb2/build
Updated to revision 12.
===== File Statistics: =====
Merged: 1
Deleted: 1
Added: 1
Existing: 1
==== Conflict Statistics: =====
File conflicts: 1
馬克-to-win:上圖中HelloWorld.java中如下圖,mine表示mark的修改內(nèi)容。而r12是服務(wù)器的內(nèi)容。上圖中r9版是服務(wù)器最初上傳的版本。r11和r12是wanzi的版本,在我們eclipse的本地也出現(xiàn)了r12的版本。為什么會(huì)如此興師動(dòng)眾?一般來講,普通的沖突是用不著這樣的,只需update和commit就可以了(不會(huì)有這么多類似mine文件等),但是如果你和別人同時(shí)更改了同一行,就會(huì)這樣興師動(dòng)眾了。你必須手動(dòng)判斷一下留哪行。
馬克-to-win:現(xiàn)在mark決定自己的和wanzi的全留。具體做法:右擊此文件/編輯沖突。然后手動(dòng)把wanzi文件中需要的部分點(diǎn)擊有個(gè)按鈕“從右拷貝到左”,再改動(dòng)改動(dòng),之后檢查文件,如果就是你要的樣子,就右擊文件/標(biāo)記為解決。于是所有剛才各路mine文件等都消失了。這時(shí)可以把整個(gè)項(xiàng)目提交了。
馬克-to-win:如果沖突不是發(fā)生在同一行,update下來,再commit上去,服務(wù)器和你本地的文件內(nèi)容就自然合并在一起了,包括了雙方的內(nèi)容。這也是大多數(shù)公司環(huán)境需要和要求的。你開發(fā)a特性,別人開發(fā)b特性,最后一合,結(jié)果又有a又有b。如果你們編輯的同一行,后面的人解決一下沖突,后面的人負(fù)全責(zé)。