如何快速推送Mercurial

Fre*_*ins 8 mercurial

在我的本地仓库更改后,我提交hg commit -m <message>,然后我推送到我的服务器hg push,然后在我的服务器中我更新工作目录hg update.

有一个更好的方法吗?

dls*_*dls 9

您描述的前两个步骤:

hg commit -m <message>
hg push
Run Code Online (Sandbox Code Playgroud)

因为Mercurial(以及大多数其他DVCS)中的提交与服务器完全分离,因此是必需的.您可以在每次提交后编写一个提交后挂钩来执行推送,但不建议这样做,因为它可以防止您在提交期间和推送之前纠正简单错误.

因为您尝试在"服务器"上执行更新,所以我假设您正在服务器上的存储库中执行代码版本.我假设这是因为通常服务器只是作为主存储库,供您和您的开发人员访问(并且还要受到备份等),并且不需要显式hg update.

假设您正在服务器上执行代码,您可以尝试使用以下命令替换推送和更新:

hg pull <path to development repo> -u

这将从您的本地仓库执行拉动,然后自动更新.根据您的服务器配置,可能很难获得本地仓库的路径.


krt*_*tek 6

对于问题的第一部分(即,在执行提交时自动推送),您可以使用此答案中描述的技巧:mercurial自动推送每次提交.

如果要自动更新工作目录,可以使用挂钩执行此操作.将其添加到存储库的hgrc中(.hg/hgrc在服务器目录中):

[hooks]
changegroup = hg update >&2
Run Code Online (Sandbox Code Playgroud)

每次推送到此服务器时,这将自动更新工作目录.Mercurial FAQ中描述了这个钩子.

如果您使用这两个解决方案,则下次执行时hg commit -m "message",提交将自动推送到远程服务器,并且服务器上的工作目录将更新.