在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'

这样可以更新了文件的版本,之后再这个基础上再做修改。