如何在Mercurial中添加远程存储库?

时间:2011-02-10 11:13:14

标签: mercurial repository hg-paths

我正在以下列方式使用Git存储库:

  • 我在不同的生产机器上有主存储库和几个遥控器。
  • 我正在将生产代码推送到远程控制器并重新启动服务以使更改生效。

我即将从Git切换到Mercurial,我想知道如何实现这样的目标。

4 个答案:

答案 0 :(得分:125)

您可以在本地克隆的[paths]文件的.hg/hgrc部分添加条目。以下是.hg/hgrc文件中的一个部分示例:

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

然后,您可以使用hg push remote1之类的命令将更改集发送到该回购。如果您希望更新的远程仓库是工作目录,则需要在执行更新的远程位置放置changegroup挂钩。这看起来像是:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

并不是每个人都喜欢让远程repos在push上自动更新他们的工作目录,而且肯定不是默认的。

答案 1 :(得分:5)

您可以查看hg-git GitHub plugin

hg-git general idea

  

添加从Mercurial推送和从Git服务器存储库中提取的功能   这意味着您可以在Mercurial上基于Git的项目进行协作,或者使用Git服务器作为开发人员同时使用Git和Mercurial的团队的协作点。

注意:我没有使用最新版本的Mercurial测试该工具。

答案 2 :(得分:5)

如果要添加默认路径,则必须在default文件中使用~project/.hg/hgrc。如下:

[paths]
default = https://path/to/your/repo

祝你好运。

答案 3 :(得分:0)

如果你在Unix上安装了Git,你可以使用这个bash函数在没有文本编辑器的情况下轻松添加遥控器的路径:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

然后用:

调用它
$ add-hg-path remote1 https://path.to/remote1

如果有人想要建立一个Powershell等价物,我也想包含它。其他潜力改进包括对参数进行错误检查并将调用分解为$(hg root)