【问题标题】:How to accept 'theirs-conflict' to resolve tree conflict: Local add, incoming add upon merge如何接受“他们的冲突”来解决树冲突:本地添加,合并时的传入添加
【发布时间】:2012-03-02 16:39:50
【问题描述】:

我遇到了以下基本树冲突:本地添加,合并时的传入添加。

我知道我们可以使用svn resolve --accept working file 来解决它,但是SVN 阻止我使用accept their-conflict 来接受传入的版本。

谁能告诉我如何用传入的文件替换我的本地文件?是否可以以任何方式使用svn resolved file

【问题讨论】:

  • 一种选择是将本地文件移开,执行svn update,将文件放回原处,然后执行svn commit。当然,这可能不是“正确”的方法,但它可能比使用 SVN 命令简单得多。
  • @aroth,这些文件在trunk和branch中都已经存在(背景:我每周将branch合并到trunk),其实我想用branch中的覆盖trunk中的,正如你所说,我需要在trunk中删除这些文件,然后提交,然后从分支中合并它们,对吧?
  • @malenkiy_scot,不,由于某些历史原因,我没有验证我指出的步骤是否正确。树冲突是由重复合并引起的,所以我删除了子目录的 svn:mergeinfo 属性,让它继承它的父目录(正确的),它适用于我的情况。

标签: svn merge tree-conflict


【解决方案1】:

正确的做法是在之前的 --dry-run 中检测到这个问题,并在合并之前删除与 svn delete 冲突的本地目录。

第一种情况:已完成合并的工作副本。 解决方案:删除工作副本,签出一个干净的副本,然后做正确的事情。

第二种情况:已经提交了错误的目录,在svn resolve --accept=working之后。

您必须svn delete 冲突目录,并从冲突目录的父目录重新运行合并,忽略mergeinfo。还原除先前冲突目录之外的所有对象(现在不存在冲突)。检查并提交更改。

例如。工作副本联合国 WC 文件夹。您在 A/conflictDir 目录中的冲突:

cd A
svn delete conflictDir
svn merge --ignore-ancestry -rbeginRev:endRev <URLrepo/A>
svn -R revert `ls | grep -v conflictDir`
<... check ...>
svn ci -m "conflictDir fixed"

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我 svn 更新了一个与我的本地文件有冲突的文件。我希望远程副本替换我的本地副本。我所做的是 svn delete file_name, 然后 svn revert file_name。 它恢复到远程副本。我不确定第一个 svn delete 是否必要。

    【讨论】:

    • 对我来说,只用rm删除文件导致冲突仍然存在,但用svn delete删除它然后恢复它修复了树冲突。
    • 这些冲突也发生在传入的删除中。然后svn revert DIR会删除目录,冲突就消失了。
    【解决方案3】:
    Tree conflict on 'wp-content/plugins/cm-alpha/condensed-back.js'
    > local file replace, incoming file edit upon update
    Select: (mc) keep affected local moves,
        (r) mark resolved (breaks moves), (p) postpone,
        (q) quit resolution, (h) help: 
    

    在我回复 r 之后

    Resolved conflicted state of 'wp-content/plugins/cm-alpha/condensed-back.js'
    Summary of conflicts:
    Tree conflicts: 0 remaining (and 1 already resolved)
    

    ...它继续更新

    Updating 'wp-content/plugins':
    A    wp-content/plugins/cm-jobs/both-ends/php/ajax-prc
    U    wp-content/plugins/cm-eats/condensed-front.css
    U    wp-content/plugins/cm-eats/condensed-front.min.css
    U    wp-content/plugins/cm-estore/condensed-front.css
    Updated to revision 304.
    At revision 304.
    

    完成后,我对有问题的文件进行了“之前”查看

    ls wp-content/plugins/cm-alpha/condensed-back.js -l
    -rwxrwxrwx 1 www-data www-data 793528 Oct 19 21:13 condensed-back.js
    

    然后我运行了这两个命令:

    sudo svn delete condensed-back.js --force
    sudo svn revert condensed-back.js
    

    然后我对有问题的文件进行了“事后”查看,确认它实际上已更新到最新的 repo 版本

    ls wp-content/plugins/cm-alpha/condensed-back.js -l
    -rwxr-xr-x 1 root root 794427 Oct 25 22:08 condensed-back.js
    

    如您所见,字节大小不同,日期是最近的日期。因此,此过程如本文其他地方所述那样有效。我只是想在程序上展示它以消除过程中的任何灰色区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2012-04-07
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多