使用mercurial执行空提交

时间:2013-08-30 21:23:25

标签: version-control mercurial commit mercurial-queue

使用Mercurial队列扩展,我可以使用一些提交消息进行空提交,如下所示:

hg qnew patch_name -m "message"

如果没有Mercurial队列,有没有办法做到这一点?我试过简单地说:

hg commit -m "message"

但是hg只是说“没有改变”而且没有提交,我没有看到任何“强制”选项会覆盖它。

如果您想知道我这样做的动机:我们有测试基础设施,您可以将其推送到特殊的存储库,它将触发自动测试运行。您需要在最尖端提交的提交消息中放入一个特殊字符串,该消息说明要运行哪些测试。显然,当我推送到实际的存储库时,我不希望这个字符串存在。而不是修改提交两次(一次添加特殊字符串,第二次删除它),我会发现只添加一个空提交,然后回滚它更清洁 - 我可以用mq做到这一点,但我想在没有mq的情况下找到一种方法。

3 个答案:

答案 0 :(得分:15)

您可以使用hg commit --amend创建空提交。

只需创建一个任意提交并撤消更改。然后将两个提交折叠起来。

示例:

touch tmp                               # create dummy file
hg add tmp                              # add file and...
hg commit -m "tmp"                      # ... commit
hg rm tmp                               # remove the file again and ...
hg commit --amend -m "empty commit"     # ... commit

答案 1 :(得分:4)

您可以进行关闭分支的提交:

hg commit --close-branch -m "message"

<强>更新

您可以关闭分支一次,但可以使用其他提交重新打开。在不更改文件的情况下重新打开分支的最简单方法是标记某些修订。因此,您可以使用hg commit --close-branch进行空提交,然后使用hg tag进行重新打开。

更新v2

实际上,您可以使用hg tag命令创建新的空提交。它具有-m参数,用于设置提交消息。如果您真的不关心此标记的正确性,则只需使用hg tag参数调用-f即可使用一个标记名称:

hg tag t1 -f -m "message"

答案 2 :(得分:3)

您现在只需执行hg ci -m "empty commit"

即可创建空的提交

例如

hg branch my-next-branch
hg ci -m "empty commit"

将使用单个空提交创建一个my-next-branch,您可以将其推送到远程仓库。