【问题标题】:SVN Quick MergeSVN 快速合并
【发布时间】:2014-01-28 03:54:01
【问题描述】:

我希望编写一个非常常见但直到最后一刻才被忽视的动作,SVN 合并。

理想情况下,它应该为当前用户运行,让我们说最近 2 天的提交以您的名义。因此,在您处理过分支的情况下,运行此脚本会将您的更改合并到主干并启动提交对话框,以便您可以在提交前进行验证。

我们的分支策略允许使用trunk-branch1-branch1.1,因此您将从最后开始并合并到主干。

鉴于我们有大量的开发人员,我并不是在寻找灵丹妙药,而是在寻找可以促进这一过程的东西。

我查看了 svn 命令 (mergeinfo),但不确定如何应用“按用户”过滤器。

非常感谢

【问题讨论】:

  • 为什么不使用普通的svn merge 选择樱桃或“完整”形式?您已经尝试过什么?

标签: svn merge commit mergeinfo


【解决方案1】:

我真的不明白你为什么要按用户合并。老实说,你似乎让你的生活变得更加困难。一方面,像这样合并一个用户很可能会产生冲突,在我看来,这违背了编写合并脚本的全部目的。

但您可以使用svn mergeinfo --show-revs eligible ^/branches/mybranch ^/trunk 来查找符合合并回您分支的主干的转速。然后在每个修订版上运行 svn log -r $REV 并忽略不在正确日期范围或用户中的修订版。然后合并这些提交。当 1.9 发布时,mergeinfo 将有 --xml--log 选项。因此,您可以将这两个步骤组合成一个命令,并使用 XSLT 为您进行过滤,类似于我给出的答案:List all files which are changed b/w two revision by a user

话虽如此,您应该只使用svn merge --reintegrate ^/branches/mybranch,其中您的当前目录是最新的更新和未修改的主干工作副本,它将合并来自分支的所有更改。如果您使用的是 1.8,则可以从 1.8 detects if a merge is a reintegration automatically 中删除 --reintegrate 选项。这样做可以最大限度地减少冲突。

如果您有嵌套分支,则必须合并所有分支才能到达主干。因此,如果您有一个名为 branch1 off trunk 和 branch1.1 off branch1 的分支,那么您需要先从 branch1.1 重新集成到 branch1,然后再从 trunk 合并回来。

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2021-07-29
    • 2021-06-06
    相关资源
    最近更新 更多