【问题标题】:How can I add remote repositories in Mercurial?如何在 Mercurial 中添加远程存储库?
【发布时间】:2011-02-10 11:13:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: mercurial repository hg-paths


    【解决方案1】:

    您将条目添加到本地克隆的 .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(而不是例如 remote1)使一个人只需键入“hg push”。然后使用默认推送存储库。很有帮助。
    • @Christian default-push 仅在您通常的推送目标与您通常的拉取源不同时才有必要/有用。如果它们相同(或者您从不拉动),那么 default 就足够了。
    • 只是补充一点:如果你的配置文件中有default-pushdefault,那么第一个将用于推送,而后者将用于拉取。如果你想从同一个远程仓库推送和拉取(如果你以类似集中的方式使用 Mercurial,你可能会这样做),那么只需将 default 放入文件中。如果他们在第一次推送时添加一个小命令行选项,那就太酷了……(或者我可能是一个 CVS 人;-))
    • 我的 Mac 上安装了 Mercurial v2.6.2,设置路径的文件在 .hg/hgrc(文件名前没有 DOT)。
    【解决方案2】:

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

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

    祝你好运。

    【讨论】:

      【解决方案3】:

      你可以看看hg-git GitHub plugin:

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

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

      【讨论】:

      • 我有能力将所有内容移植到 mercurial,我只想使用一个工具来管理我的源代码。一旦存储库构建了适当的结构,然后只转换用于生产的 mercurial 命令。我有点意识到 git 和 mercurial 都可以协作,但从未尝试过。
      • ^Chris:你的问题是:如何将 Git 存储库转换为 Mercurial 存储库?”,或“如何声明/设置远程 Hg 存储库?”(如 superuser.com/questions/43686/…),或“ Hg 在哪里声明了遥控器?” (crazythinking.wordpress.com/2009/03/07/…)
      【解决方案4】:

      如果您在 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)的调用。

      【讨论】:

        猜你喜欢
        • 2014-09-09
        • 1970-01-01
        • 2019-11-30
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多