Version control 使用mercurial执行空提交
使用Mercurial queues extension,我可以使用一些提交消息进行空提交,如下所示:Version control 使用mercurial执行空提交,version-control,mercurial,commit,mercurial-queue,Version Control,Mercurial,Commit,Mercurial Queue,使用Mercurial queues extension,我可以使用一些提交消息进行空提交,如下所示: hg qnew patch_name -m "message" 有没有一种方法可以在没有反复无常的队列的情况下做到这一点?我试着简单地说: hg commit -m "message" 但是hg只是说“没有改变”,不做提交,我看不到任何“强制”选项会覆盖它 如果您想知道我这样做的动机:我们有测试基础设施,您可以将其推送到一个特殊的存储库,它将触发自动测试运行。您需要在tipmost com
hg qnew patch_name -m "message"
有没有一种方法可以在没有反复无常的队列的情况下做到这一点?我试着简单地说:
hg commit -m "message"
但是hg只是说“没有改变”,不做提交,我看不到任何“强制”选项会覆盖它
如果您想知道我这样做的动机:我们有测试基础设施,您可以将其推送到一个特殊的存储库,它将触发自动测试运行。您需要在tipmost commit的commit消息中放入一个特殊字符串,该字符串说明要运行哪些测试。显然,当我推送到实际的存储库时,我不希望这个字符串出现在那里。与其修改提交两次(一次添加特殊字符串,第二次删除它),我会发现只添加一个空的提交,然后回滚它会更干净——我可以用mq来完成这项工作,但我想找到一种不用mq来完成的方法。您可以在关闭分支的情况下进行提交:
hg commit --close-branch -m "message"
更新:
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 commit--close branch
进行空提交,然后使用hg标记重新打开
更新v2
实际上,您只需使用hg tag
命令就可以创建新的空提交。它具有用于设置提交消息的-m
参数。如果您真的不关心这些标记的正确性,您可以通过使用-f
参数调用hg-tag
,只使用一个标记名:
hg tag t1 -f -m "message"
您可以使用hgcommit--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
现在只需执行hgci-m“empty commit”
e、 g
将创建一个带有一个空提交的my next branch
,您可以将其推送到远程回购 这些操作不会污染分支关闭和标记创建事件的历史记录吗?关闭分支不会污染历史记录。它只会添加新的变更集。标记创建使用特定的提交消息添加新的变更集,但您可以使用-m
参数覆盖它。嘿,您实际上可以创建新标记而不关闭分支。如果您不关心标记,而只关心提交消息,那么您甚至可以只使用一个标记并将其设置为-f
标志。因此,您可以使用hg tag t1-f-m“message”
创建空提交。关闭分支或添加标记不是真正的空提交。与hg commit--close branch
类似,这不会创建真正的空提交-它仍然会在变更集中留下一个标记,并创建一个修改备份包。但是,我认为这样做更好,因为它不会产生潜在的混乱效果,即当分支打算保持打开状态时,将其标记为关闭。如果您已经将其推到远程位置,则这将不起作用repository@matteo为什么不呢?只要你不在两个hg commit
命令之间插入,你就没事了。@richard同意了!但是,如果确实需要更频繁地创建别名,可以将以下内容放入.hgrc文件中:[alias]emptycommit=!触摸tmp$HG加tmp$HG-commit-m“$HG-rm-tmp$HG commit——修改“$@”
对@JosefEisl别名的改进[alias]emptycommit=!触摸tmp$HG加tmp$HG提交tmp-m“$HG-rm-tmp$HG commit tmp--amend“$@”
commit应该以我们的tmp文件为目标,这样我们就不会提交更改(因此它始终是空的提交)。我一直能够有一个“空”提交,它只做一个分支。假设我对分支进行了七次提交,然后只想添加一条新的提交消息而不更改文件。在这种情况下,hgci-m“empty commit”
应该工作吗?我试过了,但没用。我不知道我是否只是有一个旧版本,或者是因为这个示例首先生成了一个分支,而我在描述的场景中没有这样做。