我希望编写一个非常常见而又被忽略的脚本直到最后一分钟动作,SVN合并。
理想情况下,它应该针对当前用户运行,并且可以说是以您的名义提交的最近2天的提交。因此,在您处理分支的情况下,运行此脚本会将更改合并到trunk并启动提交对话框,以便您可以在提交之前进行验证。
我们的分支策略允许使用trunk-branch1-branch1.1,因此您将从最后开始并合并到trunk。
鉴于我们是大量的开发人员,我不是在寻找银弹,而是能够促进这一过程。
我查看了svn命令(mergeinfo),但不确定如何应用'by user'过滤器。
非常感谢
答案 0 :(得分: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
当前目录是对日期的更新和未修改的trunk的工作副本,它将合并来自分支的所有更改。如果您使用的是1.8,则可以在1.8 detects if a merge is a reintegration automatically之后取消--reintegrate
选项。这样做可以最大限度地减少冲突。
如果您有嵌套分支,则必须通过所有分支合并才能进入主干。因此,如果你有一个名为branch1 off trunk和branch1.1 off branch1的分支,那么你需要从branch1.1重新集成到branch1,然后再从trunk中合并。