【发布时间】:2011-02-10 11:13:14
【问题描述】:
我正在通过以下方式使用 Git 存储库:
- 我在不同的生产机器上有主存储库和几个遥控器。
- 我正在将生产代码推送到远程并重新启动服务以使更改生效。
我即将从 Git 切换到 Mercurial,我想提前了解如何实现这样的目标。
【问题讨论】:
标签: mercurial repository hg-paths
我正在通过以下方式使用 Git 存储库:
我即将从 Git 切换到 Mercurial,我想提前了解如何实现这样的目标。
【问题讨论】:
标签: mercurial repository hg-paths
您将条目添加到本地克隆的 .hg/hgrc 文件的 [paths] 部分。以下是 .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
并不是每个人都喜欢让远程仓库在推送时自动更新他们的工作目录,这当然不是默认设置。
【讨论】:
hg paths,它相当于git remote -v。
default-push 仅在您通常的推送目标与您通常的拉取源不同时才有必要/有用。如果它们相同(或者您从不拉动),那么 default 就足够了。
default-push 和default,那么第一个将用于推送,而后者将用于拉取。如果你想从同一个远程仓库推送和拉取(如果你以类似集中的方式使用 Mercurial,你可能会这样做),那么只需将 default 放入文件中。如果他们在第一次推送时添加一个小命令行选项,那就太酷了……(或者我可能是一个 CVS 人;-))
.hg/hgrc(文件名前没有 DOT)。
如果要添加默认路径,则必须在 ~project/.hg/hgrc 文件中使用 default。如下:
[paths]
default = https://path/to/your/repo
祝你好运。
【讨论】:
你可以看看hg-git GitHub plugin:
添加从 Mercurial 向 Git 服务器存储库推送和拉取的功能。 这意味着您可以在 Mercurial 的基于 Git 的项目上进行协作,或者使用 Git 服务器作为团队与使用 Git 和 Mercurial 的开发人员的协作点。
注意:我尚未使用最新版本的 Mercurial 测试该工具。
【讨论】:
如果您在 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)的调用。
【讨论】: