如果我使用相同的消息向Mercurial提交两个或多个提交,是否有办法将这些提交自动折叠为一个更改集?我认为这必须在变更集钩子中完成,但我无法找到一个自动方法。大多数示例都需要知道变更集修订号以手动折叠它,我想要一种方法来自动将之前的更改与提交的更改进行比较,并将两者“合并”为一个变更集。
换句话说:
hg commit -m "some change"
hg commit -m "some change"
| * 20 <- "some change"
| * 19 <- "some change"
| * ..
这会自动成为一个变更集并使用相同的提交消息将其折叠起来吗?
| * 19 <- "some change"
| * ..
如果提交消息完全相同且顺序,则只会更改更改。
因为我知道有人会再次指向这些...我不是在寻找这些扩展,而是一种不需要知道ID或修订版的自动方法。
如果我'标记'之前的提交,这是否可行?您可以将下一次提交合并到标记提交中吗?
答案 0 :(得分:3)
Git称之为“修改”,它是常规“git commit”工具的一个功能。它不是基于提交消息来做的,你必须传递'--amend'选项来提交它,它会将先前的提交与你正在创建的提交相结合。我没有尝试使用mercurial,但GitConcepts page on the mercurial wiki表示您可以运行hg rollback; hg commit -m "message"
以产生相同的效果。
我应该警告你,rollback将回滚存储库中的最新提交(提示),因此如果你自上次常规提交后撤消了更改或合并的内容,则回滚很可能不会回滚您想要的更改集。此外,如果您推送了更改(或其他人已经撤离),您将破坏与这些存储库的兼容性,因为您实际上是在编辑历史记录。
理论上你可以编写一个钩子来查看存储库的提示是否与你所在的分支相同,以及它的提交消息是否与你输入的那个匹配,如果是,那么回滚和一气呵成。
我很想知道你的目标是什么,因为这将有助于为该目标推荐解决方案。与组合变更集相比,可能有更好,更优雅的方式来产生您想要的结果。我知道你出于某种原因对扩展不感兴趣,但是如果你想要实现一个干净且合乎逻辑的变更集历史,你应该查看 MqExtension