0

我们使用带有 mercurial 的 Kiln。

简化描述,我们有 2 种存储库。

一些

每个发布版本的“ CurrentDevelopment ”和存储库,例如发布版本13.1的 13.1。(还有用户存储库等,如 hginit.com 中所述,但暂时可以忽略)

现在有时我们需要对已发布的版本进行修复。所以我们在发布版本的存储库中修复它。对于13.1。

然后我们不能从13.1拉到currentDevelopment存储库

这似乎工作正常。

但是现在我们可以在“ CurrentDevelopment ”中做一些事情,一个月后我们认识到13.1也需要这种改变但是我不能从CurrentDevelopment拉到13.1因为还有很多其他的改变我不想有在13.1中

我知道这是某种我不容易实现的“樱桃采摘”。但是,如果源代码不多,我会在13.1中重新编码它们。

但是在那之后,当我对13.1进行更改时,我会拉动当前开发,我也会拉动已经包含在CurrentDevelopment中的更改:-/ 所以在最坏的情况下,我可能会遇到合并失败和重复代码?我不确定 mercurial 是否会安全地识别出此代码也包含在内。

实现这些特定于版本的存储库并处理它们之间的更改的推荐方法是什么?特别是如果以后在子版本分支中需要更改当前的开发存储库?

4

1 回答 1

0

移植mercurial 命令是您的朋友。它允许您将更改反向移植到旧分支。

如果您的 Kiln 版本较旧并且没有包含 graft 命令的 Mercurial 版本,您可以使用(类似但不太可靠)移植扩展。(graft使用Mercurial的合并逻辑,移植只使用patch逻辑)

编辑...我不认为嫁接命令暴露在当前与 Kiln 捆绑的 TortoiseHg 版本的 UI 中。看看如何在 TortoiseHg 中使用移植 尽管命令行应该仍然可以工作。

于 2013-12-12T15:42:48.917 回答