在”Subversion 1.5的分支与合并”webinar中,两个问得最多的问题是:
Subversion 1.5的合并跟踪特性与svnmerge.py有什么区别? 有移植工具吗?我现在正在慕尼黑参加SubConf之前的CollabNet’s Subversion Power Workshop,第一个会议专门针对Subversion,在合并跟踪会议中覆盖了两个问题。
在讨论Subversion 1.5的合并跟踪与svnmerge.py相比的优势之前,有一点很重要的事情我要说的就是svnmerge.py是一个非常有用的工具,它由Subversion成员贡献和维护。我们非常感谢贡献者,但是Subversion 1.5确实提供了许多超过svnmerge.py的优势:
SVN 1.5合并跟踪位于每路径的级别的粒度,跟踪文件级别的合并,而svnmerge.py只跟踪整个branch的合并信息,而不会跟踪更好的级别(例如文件),这允许SVN实现cherry picking,svnmerge.py不支持的东西。 svnmerge.py经常不会正确的合并合并属性(就像svnmerge-integrated和svnmerge-blocked),在跨多个分支的合并时会导致属性冲突,SVN 1.5解决了这个问题。 SVN 1.5支持第三方工具,例如冲突解决的回调,如果出现合并冲突,Subversion可以调用你的GUI客户端,而客户端会启动冲突解决工具。Subversion可以调用你的GUI客户端,并使之调用冲突解决工具。这改进了工作流程和可用性。你可以试用 CollabNet的新GUI合并客户端来查看SVN 1.5的合并与GUI工具的集成。 SVN的合并跟踪包含了更详细的审计,例如查询合并历史来回答何时,何地做了什么合并。一个将svnmerge.py的合并跟踪历史移植到Subversion 1.5的工具前几天已经被提交,它可以做什么?
将最新的合并历史转化为多个分支。根据历史,分支最后一次合并的信息都是最重要的信息,因为它允许在下次合并时更容易,如果你希望保持简单,并且只移植最新的合并历史,你可以。 移植工具也可以扫描整个版本库来寻找合并历史,或接受一系列路径前缀来查看:svnmerge-migrate-history.py /path/to/repos trunk tasks branches我们在Merge Tracking Early Adopter Program的下载小节上传了一个脚本的拷贝,你可以下载并在你的版本库上(不是生产库,Subversion 1.5依然在开发中)测试,他应该工作正常,但是如果发生任何问题请告诉我们。我们知道一个限制:不要在已经有合并历史的Subversion 1.5版本库上运行,这还没有测试过(只是:你干吗要这么做?)现在,只有.py脚本,但是Subversion开发者以后会发布一个Windows可执行程序。