【发布时间】:2011-11-07 16:30:52
【问题描述】:
阅读 Mercurial,它似乎总是分支和合并完整的存储库。
是否可以只将一些文件从一个分支合并到另一个分支? (例如,我可能只希望合并修复给定错误的文件。)
同样,我可以挑选一些更改集,但仍然有正确的合并记录,所以如果稍后完成完整的合并是正确的吗?
我来自一个强制的“心态”,所以可能会以错误的方式思考这个问题。
【问题讨论】:
阅读 Mercurial,它似乎总是分支和合并完整的存储库。
是否可以只将一些文件从一个分支合并到另一个分支? (例如,我可能只希望合并修复给定错误的文件。)
同样,我可以挑选一些更改集,但仍然有正确的合并记录,所以如果稍后完成完整的合并是正确的吗?
我来自一个强制的“心态”,所以可能会以错误的方式思考这个问题。
【问题讨论】:
是的,Mercurial 总是对整棵树进行分支和合并。你没有像perforce 这样的“灵活性”让你选择单个文件进行合并。这是一件好事(相信我)。变更集是原子的(你不能拆分它们)和不可变的(你不能改变它们)。因此,这需要稍微改变一下心态。
变更集应针对一项任务,并且仅针对一项任务。如果您正在修复错误,那么除了错误修复之外,变更集中没有其他内容。然后,您获得了一个变更集,其中记录了该错误修复,并且您没有想要拆分它的问题。想要这样做是没有意义的。半个错误修复通常比没有错误修复更糟糕。
当谈到合并时,有几个选项:
graft (new in 2.0) 和旧的transplant 扩展发挥作用的地方。它们允许您从另一个分支“挑选”单个或一系列变更集并将它们放在另一个分支上。【讨论】:
阅读 Mercurial,它似乎总是分支和合并 完整的存储库。
是的
是否可以只将一些文件从一个分支合并到另一个分支? (例如,我可能只希望合并修复给定错误的文件。)
只需触摸所需变更集中的“一些文件”,然后将分支与 head 中的此变更集与另一个分支合并或在任何时间进行移植
同样,我可以挑选一些更改集,但仍然有正确的合并记录,所以如果我完成合并稍后完成它是正确的吗?
是的,你可以移植|任何到另一个分支的变更集,都会记住应用的状态,并且在最终合并时不会复制更改
【讨论】: