Myeclipse中svn插件提交代码注意:
1.每次提交代码前,一定要先把本地代码更新到最新。
2.如果文件是第一次提交到SVN仓库,提交前先add文件到版本控制,然后才能commit。
- 添加文件到版本库。 这是一个两步的过程:
- 先右击选中的文件,然后右键依次选择 "TortoiseSVN"->"Add"
- 先右击选中的文件,然后右键依次选择 "TortoiseSVN"->"SVN Commit"
3.如果担心提交会产生冲突,可以先把需要提交的部分备份到电脑上,然后删除已经备份过的代码,删除后重新更新代码到最新,然后把备份的文件copy过来,再进行commit操作,就不会产生冲突了。
借:
常见情况是:假定项目名称是FAMS。
(一) 用户张三CHECKOUT 了 FAMS的 revision 101,然后开始工作。
(二)用户李四CHECKOUT 了 FAMS的 revision 101,然后开始工作。
(三) 现在李四完成了工作,进行提交,SVN 版本号变为revision 102,一切OK.
(四) 现在张三完成了工作,也要进行提交,由于其工作的基础版本(workingbase)是revision 101,这时SVN会提示版本已过期,需要先 更新(svn-update).但这时真正的问题就来了:
注意SVN的机制是提交时合并,如果它发现服务器上文件版本比本地文件版本新,它会自动把服务器上的文件更新到本地,如果这个文件 李四从未改过,一切OK,更新就可以了。
但是,如果李四也对此文件比如名字叫 fillform.java做了修改, 这又分三种情况:
第一种情况:李四新增方法或内容,张三也是新增的内容,各不冲突,一切OK,SVN会自动合并。
第二种情况:李四删除了部分代码,但服务器上此文件(张三提交的)此部分代码未动,而版本却比本地新,则SVN会自动把服务器上 此文件内容合并到本地李四的版本中,注意啊:它把李四正确的删除工作给反复了,这就是SVN这种增量合并机制导致的最大问题。
正确方法是: 首先拷贝此文件到另一个临时目录,比如D:\TEMP,然后SVN-UPDATE此文件,第三步拷贝此文件回来,由于此时工作基础
版本已更新至revision101,则可以正常对比,修改。最后提交即可。
第三种情况:如果SVN-UPDATE时发生了冲突(conflict),会产生三个文件:
一个是.mine 本地版本,
一个是.r101,你的工作基准版本,
一个是.r102,服务器端的最新版本。
则手工修改冲突,然后先SVN-resolved, 注意这是告诉SVN你已经解决了冲突。然后执行下一步SVN-COMMIT即提交,就可以把新代码更 新上去了。