如何为mercurial写一个智能推送,一个在推送之前进行拉动和合并的方式?

时间:2012-05-21 11:03:21

标签: mercurial

我希望为hg push制作某种别名,以便它自动自动执行hg pullhg mergehg commithg push

显然,如果出现任何问题,比如合并时的冲突,就会停止。

到目前为止,我写了这篇文章但是当你没有任何东西可以拉动它时它不起作用:

hg pull -u && hg merge && hg ci -m "merge" && hg push

当您没有任何要合并的内容时,它将失败:

abort: there is nothing to merge

1 个答案:

答案 0 :(得分:2)

名为fetch的内置扩展程序可以完成所有这些操作,只需按下:

  

在最简单的情况下,hg fetch的作用类似于hg pull -u - 它将更改从远程存储库拉到本地存储库并更新工作目录。 (这类似于Subversion或CVS中的“更新”命令。)

     

如果提取的更改需要合并,则提取扩展会尝试hg merge后跟hg commit

启用扩展程序,然后执行:

$ hg fetch && hg push

然而,考虑进行rebase(快进合并)而不是常规合并。这有助于保持谱系从无休止的“合并”提交中保持清洁,如果您--keep原始更改集,则可以像定期合并一样安全。

事实上,我在处理单个任务时的常用工作流程如下:

# edit some files, test
$ hg commit
# edit some more files, test
$ hg commit
$ hg pull --rebase
$ hg push