【问题标题】:mercurial automatic push on every commit每次提交时都会自动推送
【发布时间】:2023-04-10 02:30:01
【问题描述】:

非常熟悉颠覆工作流程以及我的计算机在 99.9% 的时间都连接到互联网这一事实,我不喜欢单独执行“hg ci”和“hg push”。

我记得 bzr 有一个“checkout”命令,可以绑定后续的“commit”命令以自动直接提交到服务器(“push”)。

mercurial 有类似的东西吗?

PS:编写运行 'hg ci $* && hg push' 的 shell 脚本或别名将是我做的最后一件事。

【问题讨论】:

  • 为什么不是脚本?钩子不是让你想要在没有推动的情况下提交的 0.1% 的时间变得更加困难吗?

标签: mercurial automation


【解决方案1】:

您可以添加hook 以在成功提交后运行推送。

编辑:我刚刚试了一下,它似乎工作正常。我将以下内容添加到要为其激活自动推送的存储库的 .hg/hgrc 文件中:

[hooks]
commit.autopush = hg push

编辑 2:另外,您不必担心这样的事情:

  • 您位于一个您不想自动推送的存储库中。
  • 您使用hg -R ~/another-repo-that-autopushes commit 在会自动推送的不同存储库中提交。
  • hg push 挂钩最终会将更改推送到当前目录而不是您要提交的目录吗?

不,不会。根据我链接的页面:

一个可执行的钩子总是在其当前目录设置为存储库的根目录的情况下运行。

这是一个边缘情况,但 Mercurial 可以正确处理它。

【讨论】:

  • 这个钩子的问题是创建临时提交的mq命令(qnew、qpush等)会触发推送。使用 post-commit 钩子可能是一个更好的主意。
  • @hwiechers:你能举个例子说明如何编写提交后挂钩吗?
  • @max:不要使用commit.autopush = hg push,而是使用post-commit.autopush = hg push。 post-commit 挂钩在 commit 命令成功完成后运行。每当在本地存储库中创建变更集时,提交挂钩就会运行。详情请见linux.die.net/man/5/hgrc。
猜你喜欢
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多