【发布时间】:2011-01-22 05:36:47
【问题描述】:
有没有办法在提交后将一堆 Mercurial 变更集与命名分支相关联,即追溯性?
【问题讨论】:
有没有办法在提交后将一堆 Mercurial 变更集与命名分支相关联,即追溯性?
【问题讨论】:
我只是想这样做,这是我找到的解决方案。 自最初提出问题以来已经过去了一年,这可能解释了为什么我现在可以找到解决方案。 它的缺点是您在此过程中创建了额外的修订,但这对我来说还不错。
首先,您返回要创建分支的位置。 在我的情况下,我实际上想启动一个新的根(因为我在启动存储库时不是很明智,但无论如何),所以我将更新为 null。您可能想从其他地方开始,这取决于您的情况。
$ hg update null
然后,创建分支。
$ hg branch blah
$ hg commit -m "Created blah branch."
然后,我们将所做的所有提交 rebase 到我们的新分支上:
$ hg rebase -s SOURCE -d DEST
这里的 SOURCE 应该是您在要从中创建分支的提交中所做的第一个提交,而 DEST 应该是创建分支的提交(我们在上面提交的那个)。
【讨论】:
不,分支名称是变更集的一部分(它实际上就像您添加到提交中的标签),这意味着变更集哈希取决于分支名称。
因此,追溯更改它的唯一方法是重写历史记录(如果您将更改推送到其他地方则效果不佳,因为您必须重写每个有更改的存储库)。
要重写历史,你可以使用例如 mq。
【讨论】:
不是一个完整的解决方案,但无需重写历史;您可以标记未命名分支中的最后一个更改集。如果你从不从这里重新分支,那么标签应该会出现。如果您确实需要重新分支,您可以在标记的变更集之后转到命名分支。
【讨论】: