【发布时间】:2010-11-24 14:01:50
【问题描述】:
假设我的 SVN 中有 A: /A_Project/trunk/A 和 B: /B_Project/trunk/B。我想将 A 与 B 合并并将其存储在 B 中。我在 TortoiseSVN GUI 中使用了“合并两个不同的树”选项。一切都很好,除了最终修订版没有 A 树的更改日志!
问题是:如何合并两个不同的树并在最终修订中保留它们的日志?
感谢您的帮助!
【问题讨论】:
标签: svn tortoisesvn merge
假设我的 SVN 中有 A: /A_Project/trunk/A 和 B: /B_Project/trunk/B。我想将 A 与 B 合并并将其存储在 B 中。我在 TortoiseSVN GUI 中使用了“合并两个不同的树”选项。一切都很好,除了最终修订版没有 A 树的更改日志!
问题是:如何合并两个不同的树并在最终修订中保留它们的日志?
感谢您的帮助!
【问题讨论】:
标签: svn tortoisesvn merge
老实说,我的猜测是 Tortoise 只是创建分支 B 的工作副本,插入树 A 中的代码,然后合并,就好像这只是一次大规模的编码练习。
我不相信 SVN 本身支持项目之间的合并因为修订号(以及因此附加的提交日志)会明显冲突,因为两个项目都有修订 1..n。
所以我不知道你想做的事情是否可行。
有关使用命令行界面进行合并的详细信息,我推荐 Subversion 圣经:
【讨论】:
因为您进行了合并(树或文件,没关系),所以 A 的历史记录不容易查看。但是,如果您使用支持 1.5.x 或更新版本的 Subversion 客户端进行此合并并检查 svn:merge-info 属性,则可以查看 A 的历史记录。从命令行使用svn log 命令和-g 选项,您可以查看文件或树的历史记录,包括多次合并的路径。
这也可以用 TortoiseSVN 来完成。请参阅 TortoiseSVN 1.5.x 版本中的this release note,了解如何查看合并历史与常规历史。
【讨论】:
Subversion 不支持将两棵树合并成一个保留合并双方历史的修订版。
这是 Subversion 模型与其他一些版本控制系统(例如 Mercurial 或 Git)之间的一个非常基本的区别。
现代版本的 Subversion 可以使用 mergeinfo 属性模拟这一点,但它不是原生内置的。
【讨论】: