如何使用Mercurial快速推动

问题描述

| 更改本地存储库后,我用
hg commit -m <message>
提交,然后用
hg push
推送到服务器,然后在我的服务器中用
hg update
更新工作目录。 有一个更好的方法吗?     

解决方法

您描述的前两个步骤:
hg commit -m <message>
hg push
根据提交与Mercurial(以及大多数其他DVCS)中的服务器完全分开的事实是必需的。您可以编写一个提交后钩子,以在每次提交后执行推送,但是不建议这样做,因为这会阻止您在提交期间和推送之前纠正简单的错误。 因为您正在尝试在“服务器”上执行更新,所以我假设您正在服务器上的存储库中执行代码的版本。我之所以这样假设,是因为通常服务器仅充当您和您的开发人员可以访问的主存储库(并且还可以进行备份等),并且不需要显式的“ 2”。 假设您正在服务器上执行代码,则可以尝试使用以下命令替换推送和更新:
hg pull <path to development repo> -u
该操作将从本地存储库中提取信息,然后自动进行更新。根据您的服务器配置,可能很难获得本地存储库的路径。     ,对于问题的第一部分(即,在执行提交时自动推送),您可以使用此答案中描述的技巧:在每次提交时进行Mercurial自动推送。 如果要自动更新工作目录,可以使用钩子进行。将其添加到存储库的hgrc中(服务器目录上的6):
[hooks]
changegroup = hg update >&2
每次向该服务器推送时,这将自动更新工作目录。此挂钩在Mercurial常见问题解答中进行了描述。 如果使用这两种解决方案,则下次执行“ 8”时,提交将自动推送到远程服务器,并且服务器上的工作目录将被更新。     ,有一个名为自动同步的扩展,您可能会发现有用:   此扩展提供了autosync命令,该命令可自动连续地提交工作副本更改,从另一个存储库中获取(拉出,合并,提交)更改,并将本地更改推回到另一个存储库中。将配置文件或待办事项列表视为要进行同步的示例。在更高级别上,autosync命令不仅可以同步存储库,还可以同步工作副本。中央存储库(通常没有工作副本)必须用作同步中心: