16

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

hg qnew patch_name -m "message"

有没有办法在没有 Mercurial 队列的情况下做到这一点?我简单地尝试了:

hg commit -m "message"

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

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

4

3 回答 3

18

您可以使用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
于 2014-11-12T17:18:22.367 回答
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"
于 2013-08-30T21:44:47.227 回答
4

您现在可以通过执行创建空提交hg ci -m "empty commit"

例如

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

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

于 2018-10-11T03:27:03.610 回答