首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

Subversion树摩擦

2012-10-06 
Subversion树冲突树冲突场景同一条分支,有2个Dev在同时编辑一个文件,两人没沟通好:其中一Dev A把一个文件

Subversion树冲突

树冲突场景同一条分支,有2个Dev在同时编辑一个文件,两人没沟通好:
    其中一Dev A把一个文件移到另外一个目录或者重命名了,并且已经提交;另一Dev B也同时在修改这个文件内容,并不知道A已经将该文件转移或重命名;冲突出现:当Dev B想提交代码到分支时,会出现不让提交情况。

场景实例
    初始分支:?xfc 写道$ svn list -Rv http://xxx.com/branches/boringkiller
    ? 61536 fangchen 2月 13 19:32 htdocs/
    ? 61536 fangchen 59 2月 13 19:32 htdocs/changeLog.txt
    ?Dev A的改动,且提交:xfc 写道$ svn st
    A htdocs/changlog.txt
    D htdocs/changeLog.txt?Dev B的改动:xfc 写道$ svn st
    M htdocs/changeLog.txt?此时Dev B想提交代码,报错:xfc 写道$ svn ci -m"xfc ci"
    Sending htdocs/changeLog.txt
    svn: E155011: Commit failed (details follow):
    svn: E155011: File '/home/xfc/works/myDemo/htdocs/changeLog.txt' is out of date
    svn: E160013: File not found: transaction '61545-1cqn', path '/misc/avatar/branches/boringkiller/htdocs/changeLog.txt'?svn up后:xfc 写道$ svn up
    Updating '.':
    ? ? ? C htdocs/changeLog.txt
    A htdocs/changlog.txt

    At revision 61545.
    Summary of conflicts:
    Tree conflicts: 1

    ?

    解决办法一方案(以Dev A的版本为准,把Dev B自己的改动合并到Dev A的改动上)

    ?

    第一步

    ?写道$ svn diff htdocs/changeLog.txt
    Index: htdocs/changeLog.txt
    ===================================================================
    --- htdocs/changeLog.txt(working copy)
    +++ htdocs/changeLog.txt(working copy)
    @@ -2,3 +2,5 @@
    @Author xfc

    Tree Conflict Demo.
    +
    +I'm editing this file.

    ?

    第二步

    ?写道$ svn diff htdocs/changeLog.txt > replace

    第三步,编辑replace文件,替换 “changeLog.txt”为“changelog.txt”

    第四步

    xfc 写道$ svn patch replace
    ? ? U htdocs/changlog.txt

    现在的状态:

    ?写道$ svn st
    M htdocs/changlog.txt
    A + C htdocs/changeLog.txt
    > local edit, incoming delete upon update

    Summary of conflicts:
    Tree conflicts: 1

    ?

    第五步,删除冲突文件

    xfc 写道svn del --force htdocs/changeLog.txt
    ? ? D htdocs/changeLog.txt

    ?

    ?最后:

    ?写道$ svn st
    ? ? M htdocs/changlog.txt


    二方案(以Dev B的版本为准,把Dev A对文件的重命名无效)

    ?

    第一步,删除A的改动:

    xfc 写道$ svn del --force htdocs/changlog.txt
    ? ? D htdocs/changlog.txt

    ?第二步,接受本地working的改动

    xfc 写道svn resolve --accept=working htdocs/changeLog.txt
    ? ? Resolved conflicted state of 'htdocs/changeLog.txt'

    ?看本地改动是否生效:

    xfc 写道svn diff
    Index: htdocs/changlog.txt
    ===================================================================
    --- htdocs/changlog.txt(revision 61559)
    +++ htdocs/changlog.txt(working copy)
    @@ -1,5 +0,0 @@
    -Boring Killer Change Log:
    -@Author xfc
    -
    -Tree Conflict Demo.
    -
    Index: htdocs/changeLog.txt
    ===================================================================
    --- htdocs/changeLog.txt(working copy)
    +++ htdocs/changeLog.txt(working copy)
    @@ -3,3 +3,4 @@

    Tree Conflict Demo.

    +I'm editing my file.

    ?完毕,ci了~

    参考资料http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html

    ? 总结:

    ? ? 使用到的svn一些没接触过的命令

    ?

    svn patch?svn del --force filepathsvn resolve --accept=working filepath

    ?

    ?

    ?

热点排行