2011-05-26 81 views
8

在本地回购更改后,我承诺使用hg commit -m <message>,然后我推送到我的服务器hg push,然后在我的服务器中更新工作目录hg update如何使用Mercurial快速启动

有没有更好的方法来做到这一点?

回答

8

你所描述的前两个步骤:

hg commit -m <message> 
hg push 

需要按,承诺要完全分开从水银(以及大多数其他DVCS以及)服务器的事实。你可以编写一个post-commit钩子来执行每次提交后的推送,但不建议这样做,因为它会阻止你在提交期间和推送前纠正简单的错误。

因为你正试图在'服务器'上执行更新,我假设你正在服务器上的版本库中执行代码版本。我假设这是因为通常服务器只是作为一个主存储库供您和您的开发人员访问(并且还需要备份等),并且不需要明确的hg update

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

hg pull <path to development repo> -u

这将从本地回购进行拉,然后自动更新。根据您的服务器配置,可能很难找到本地仓库的路径。

2

有一个叫autosync你可能会发现有用的扩展:

这个扩展提供了自动同步命令,自动连续提交工作副本的变化,取(拉,合并,提交)从另一个版本库的修改和推本地更改回其他存储库。将配置文件或待办事项清单作为要同步的示例。在更高级别上,autosync命令不仅可以同步存储库,还可以同步工作副本。必须使用中央存储库(通常没有工作副本)作为同步集线器:

6

对于问题的第一部分(即在您执行提交时自动推送),您可以使用此处描述的技巧回答:mercurial automatic push on every commit

如果要自动更新工作目录,可以使用挂钩来完成。在你的仓库(.hg/hgrc您的服务器目录)的hgrc补充一点:

[hooks] 
changegroup = hg update >&2 

这将每一个推入到这个服务器进行一次自动更新的工作目录。该挂钩在Mercurial FAQ中描述。

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

+0

非常感谢你,你刚刚度过了我的一天! Mercurial比git和svn容易得多,它只是做我想做的事情,没有别的,没有别的。 – elslooo 2011-07-19 17:53:36