104

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

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

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

4

4 回答 4

135

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

不是每个人都喜欢让远程存储库在推送时自动更新他们的工作目录,这当然不是默认设置。

于 2011-02-10T15:42:44.313 回答
10

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

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

祝你好运。

于 2016-08-23T09:16:23.823 回答
5

你可以看看hg-git GitHub 插件

hg-git 总体思路

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

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

于 2011-02-10T11:56:10.560 回答
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).

于 2016-08-19T16:19:35.487 回答