模仿两个人在使用eclipse svn开发

模仿两个人在使用eclipse svn开发
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203
马克-to-win:现在我们模仿两个人在使用eclipse svn开发



1)先是工程师wanzi修改HelloWorld.java【1)添加一行且删除一行,2)删除3行,3)加了一个回车】,工程师mark将来也要修改这个文件。wanzi单独修改web.xml,添加 HelloWorldWanzi.java.删除MANIFEST.MF文件。

马克-to-win:右击你的项目,team/与资源库同步,于是打开了本个项目的team synchronizing视图。双击你的HelloWorld.java,出现了两个文件比较的局面。自己找找,左上角有很多图标,比如 incoming mode是只显示服务器上的变化,而outgoing mode(我们截图就是这种模式)是只显示我们本地刚做的文件变化。截图中黑加箭头就是比服务器多出的文件。黑减箭头就是比服务器少的文件。黑色箭头就是相比服务器来讲,有改变的文件。







完成了编辑以后,下一步,右击你的项目,team/提交

























打开svn console,可以看到输出结果:

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视图,里面会说no changes in svn(testWeb)。表名你的eclipse和svn版本一模一样。


马克-to-win:2)工程师mark现在正在他的机器上也同时修改这个项目,他不知wanzi已经提交(而且为了试验效果,wanzi还改动提交好几次,所以版本都到了12)。他会修改HelloWorld.java,。之后他想commit。提交前,他先右击他的项目,team/与资源库同步,于是打开了本个项目的team synchronizing视图。我们先看一下incoming/outgoing mode,这种模式包含所有的改变。





















马克-to-win:左箭头加表示服务器比本地多的。蓝色左箭头表示服务器有修改而你没动过这个文件。而红色箭头表示冲突,表示你和服务器都改动过文件,(千万注意不见得你和服务器改的是同一行,也许你改1行,他改10000行)。当有冲突时,commit all outgoing changes按钮是灰色的,只有update all incoming changes按钮是可点的。













正常情况下,即,你的项目组水平都很高的情况下,我们接受你的组员的东西,则先update,把wanzi的上传到服务器端的东西先update下来。再结合上mark自己的东西(commit到服务器上去)(这也是公司通常的做法)。

好,正式操作,点击上图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的修改内容。而r12是服务器的内容。上图中r9版是服务器最初上传的版本。r11和r12是wanzi的版本,在我们eclipse的本地也出现了r12的版本。为什么会如此兴师动众?一般来讲,普通的冲突是用不着这样的,只需update和commit就可以了(不会有这么多类似mine文件等),但是如果你和别人同时更改了同一行,就会这样兴师动众了。你必须手动判断一下留哪行。















































马克-to-win:现在mark决定自己的和wanzi的全留。具体做法:右击此文件/编辑冲突。然后手动把wanzi文件中需要的部分点击有个按钮“从右拷贝到左”,再改动改动,之后检查文件,如果就是你要的样子,就右击文件/标记为解决。于是所有刚才各路mine文件等都消失了。这时可以把整个项目提交了。

马克-to-win:如果冲突不是发生在同一行,update下来,再commit上去,服务器和你本地的文件内容就自然合并在一起了,包括了双方的内容。这也是大多数公司环境需要和要求的。你开发a特性,别人开发b特性,最后一合,结果又有a又有b。如果你们编辑的同一行,后面的人解决一下冲突,后面的人负全责。