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


99

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

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

我将要从Git转到Mercurial,我想提前知道如何实现这样的目标。

Answers:


130

您将条目添加到[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

并不是每个人都喜欢远程仓库在推送时自动更新其工作目录,因此当然不是默认设置。


23
对于只想查看遥控器使用hg paths情况的人git remote -v
Keyo

5
default-push(而不是remote1)使用户只需键入“ hg push”即可。然后使用默认推送存储库。很有帮助。
基督教徒

6
@Christian default-push仅在您通常的推入目标与您通常的拉取源不同时才是必要/有用的。如果它们相同(或者您从不拉扯),就default足够了。
Ry4an Brase 2012年

2
只需添加更多信息:如果您在配置文件中同时拥有default-pushdefault,则第一个将用于推送,而第二个将用于推送。如果要从同一个远程存储库中进行推送和拉取(如果您以类似集中式的方式使用Mercurial,则可能要这样做),则只需放入default文件中。如果他们添加了一个小的命令行选项就可以在第一次按下按钮时就做到了,那真是太酷了……(或者我对CVS太多了;
tiktak 2013年

我的Mac上安装了Mercurial v2.6.2,并且用于设置路径的文件位于其中.hg/hgrc(文件名之前没有DOT)。
Regis Zaleman

9

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

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

祝好运。


5

您可以看看hg-git GitHub插件

hg-git总体思路

增加了从Mercurial推入和拉出Git服务器存储库的功能。
这意味着您可以在Mercurial的基于Git的项目上进行协作,或者将Git服务器用作与使用Git和Mercurial的开发人员的团队的协作点。

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


1
我有能力将所有内容移植到软件中,我只想使用一种工具进行源代码管理。一旦存储库构建了适当的结构,则仅进行转换,然后仅转换用于生产的命令。我知道git和mercurial都可以合作,但从未尝试过。
裸照

2
^克里斯:您的问题也是如此:如何将Git存储库转换为Mercurial存储库?”或“如何声明/设置远程Hg存储库?”(例如在superuser.com/questions/43686/…中),或“在哪里遥控器在汞声明“(?crazythinking.wordpress.com/2009/03/07/...
VonC

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)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.