3

[我将我的问题标记为 mercurial,但实际上,我问的是一个适用于其他源代码控制应用程序的概念性问题。]假设您有一个文件夹,其中包含受版本控制的应用程序源代码;称之为主干线。我克隆存储库并开始修改代码,处理程序的新版本,一次又一次地提交修订,这些修订永远不会成为主干的一部分。

然后有一天,在修订 23 的工作中,我发现了一个错误。

我提交它,作为修订版 24。

我希望你修复我的错误,而不需要我所做的所有其他更改。将修订版 24 的代码(错误修复)推送或合并回主干的一般程序是什么?

4

1 回答 1

4

在 Mercurial 中,您有多种选择(我确信其他 DVCS 具有类似的功能)

最简单的方法:一旦你意识到 bug 属于主干线,你更新到主线提示,提交,推送,然后将该 changeset 合并到你的侧项目中。

hg up -r mainline
# make your changes
hg com -m "I fixed the bug"
hg push -r mainline   ## now others can pull it!
hg up -r sideproject
hg merge mainline
hg com -m "merge mainline bugfix into sideproject"

完毕。

有一些方法,通过使用 mq 扩展或导出补丁,可以让您编辑历史以实现类似的结果,但它们都只是在事后尝试完成上述方法。

变更集伴随着其祖先的所有变化。因此,您需要在拓扑上将主线更改(修订版 24)与您的副项目(修订版 23)分开。

于 2013-07-12T21:01:38.077 回答