Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 使用mercurial执行空提交_Version Control_Mercurial_Commit_Mercurial Queue - Fatal编程技术网

Version control 使用mercurial执行空提交

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

使用Mercurial queues extension,我可以使用一些提交消息进行空提交,如下所示:

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”
应该工作吗?我试过了,但没用。我不知道我是否只是有一个旧版本,或者是因为这个示例首先生成了一个分支,而我在描述的场景中没有这样做。