在svn环境下,几个人共同对一份文件进行修改进,当A还在修改的时假,B已经提交了新的版本,到A完成后再提交,就会出现: File '/file' is out of date. 的问题,原因是的版本的冲突,当前正在编辑的不是最新版本的文件:
解决的方法:
第1步:先用svn up 把当前的工作库更新。 此时,会出现提示关于新版本文件与当前的冲突问题:
Conflict discovered in 'file'.
Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options:方法一(自动解决冲突): 可以选df ,再选r来解决冲突,之后就可以再次提交了
方法二(手动解决冲突): 可以选择P 。会在工作目录中生成当时版本的文件
file.r22(版本)和用户编辑时的版本文件
file.r21(编辑时的版本)
file.mine(生成的file未被update时的副本)
file文件中出现 :
<<<<<<< .mine #自己編写的时版本文字信息,内容上标记的上面
>>>>>>> .r22 #当前新版本写进来的文件信息 ,同上
注:小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在冲突区所做的修改:
此时还时不能提交更新,会出现:
svn: Commit failed (details follow):
svn: Aborting commit: '/home/user1/web/file' remains in conflict因为冲突还没有解决,就算你更新了最新的版本。
最简单的方法:删除掉生成的两个版本文件:如file.r22 file.r21 和 file.min 就可以提交更新.
你也可以在提效前先修改file里面的内容。
之后就可以使用svn ci的用法来更新svn
方法三(放弃修改):可以运用svn revert <filename>来放弃更改。
一旦你解决了冲突,你需要通过命令svn resolved让Subversion知道,这样就会删除三个临时文件,Subversion就不会认为这个文件是在冲突状态了。
$ svn resolved file Resolved conflicted state of 'file'这样可以更新了文件的版本,之后再这个基础上再做修改。