关于版本控制:使用 mercurial 执行空提交

Perform an empty commit with mercurial

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

1
hg qnew patch_name -m"message"

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

1
hg commit -m"message"

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

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


>您可以使用 hg commit --amend 创建空提交?/p>>

>只需创建一个任意提交并撤销更改。然后将两个提交折叠在一起?/p>>

>示例?/p>>

1
2
3
4
5
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


>你现在可以通过 hg ci -m"empty commit"

> 创建空提交

>例?/p>>

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

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

>


你可以提交关闭分支:

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

更新:

您可以关闭一次分支,但可以通过另一个提交重新打开它。在不更改文件的情况下重新打开分支的最简单方法是标记一些修订。因此,您可以使用 hg commit --close-branch 进行空提?唬缓笫褂?hg tag 重新打开。

>

>更新 v

>

>实际上你可以只用 hg tag 命令创建新的空提交。它具有用于设置提交消息的 -m 参数。如果你真的不关心这个标签的正确性,你可以通过使用 -f 参数调用 hg tag 来只使用一个标签名称?/p>>

1
hg tag t1 -f -m"message"