编辑 HG 仓库中的提交并标记为 "closed"

Edit commits in HG repo & mark as "closed"

我目前正在处理 BitBucket 放弃 HG 支持的后果。我们将尝试 hg-git,因为虽然我更喜欢自托管,但我的老板对 Atlassian 还没有生气到离开 BB。借此机会在转换为 GIT 之前清理我们现有的 HG 存储库。已使用 hg convert 删除一些意外提交的二进制文件以减小大小等。

我注意到的一件事是,我们有大约两打旧分支,技术上 "open",但已合并为默认分支(没有关闭提交,但它们已有数月至数年历史).有什么方法可以使用 hg histedit 之类的工具或在 hg convert 期间返回并用 --close-branch 专门标记旧分支头?

通过查看文档,我可以找到有关编辑文件、编辑提交内容或修改提交消息的内容,但我找不到任何内容提及有关提交是否为 "closed" 的元数据。我知道这只是给定提交的一个标志,但我不知道如何通过任何 HG 扩展追溯添加它。

编辑:为了更清楚一点,我知道我可以更新每个旧分支并添加一个新的提交来关闭分支。会有很多看起来悬垂的、封闭的脑袋,但这样就足够了。 但是,我还必须在 HG 中给他们每个人一个书签,否则这些额外的 "closing" 提交会在 hg-git 转换中丢失。我宁愿避免在 git 分支列表中添加 ~30 个额外的分支,只是为了让它们在 HG 中显示为正确关闭而不必使用 revsets。

我想做的不是 "essential" 在回购的宏伟计划中,但如果编辑提交的元数据说 --close-branch 是不可能的,我会感到惊讶。

我用模拟存储库测试了 rebase 的想法,它似乎有效。

这是开始的回购:

这里是 rebase 后的状态:

我认为这个例子符合问题的要求。原来悬空的 close-b运行ch 变更集被移动到合并之前。

我更新为默认值并运行以下命令:

hg rebase --dest=4 --source=3 --keepbranches --config=ui.merge=internal:merge

我实际上使用 Tortoise Workbench 来执行变基,这就是它使用的命令。所以 ui.merge 的最后一个参数可能不是绝对必要的。

正如您可能已经注意到的那样,使用 hg convert 在您修改存储库时创建新的克隆是一个非常好的主意。因此,如果它搞砸了,你有一个简单的撤消选项。我当然也会推荐此操作的方法。