如何在 mercurial 中交换我的主存储库位置

How do I swap my master repository location in mercurial

我有一个本地 Mercurial 存储库。我用位于 google 驱动器文件夹中的单独文件夹中的克隆对其进行备份。我会不时地进入 google 驱动器回购并执行 hg pull,然后 google 驱动器负责备份它。但我想交换这些责任,这样我的本地就是 google 驱动器中那个的克隆。换句话说,今天我这样做:

来自我的本地 c:\source 文件夹:

  1. 做事
  2. 汞提交
  3. cd c:\googledrive\source
  4. 汞拉

我宁愿:

来自我的本地 c:\source 文件夹:

  1. 做事
  2. 汞提交
  3. 汞推

我不知道要在我的 hgrc 文件中做什么才能做到这一点。有人可以帮忙吗? 这是我的 c:\source hgrc:

的内容
# Generated by TortoiseHg settings dialog

[tortoisehg]
summarylen = 80
engmsg = True
editor = notepad
tabwidth = 2
forcerepotab = False
monitorrepo = localonly

[ui]
username = *****

这是 google 驱动器

中克隆的内容
[paths]
default = c:\source\SwissArmyKnife

你的问题揭示了一个很有启发性的误解。当有人说 Mercurial 是一个 分布式 版本控制系统 (DVCS) 时,这意味着有 no ‘master’ 存储库。

当您键入 hg push <repo>hg pull <repo> 时,Mercurial 会将当前存储库中的变更集与 <repo> 中的变更集进行比较,并推送或拉取变更集以创建此变更集和远程变更集一贯的。 <repo> 可以用 URL(即 ssh://...http://...)表示,或者用 .hg/hgrc 中命名的 shorthand 表示:因此在你的情况下你可以添加

[paths]
gdrive = c:\googledrive\source

这意味着您可以写 hg push gdrivehg pull gdrive 并且 Mercurial 会知道您的意思。您可以在此处列出多个路径。

然而,有一条“神奇”的道路。如果您有路径 default 那么如果您 指定 <repo>.

则 Mercurial 将使用该路径

因此(最后),如果您将 c:\source folder 中的 .hg/hgrc 调整为包含

[paths]
default = c:\googledrive\source

然后在该目录中 plain hg push 将与该驱动器同步变更集。

当您克隆存储库 (hg clone) 时,Mercurial 通常会向您的 .hg/hgrc 添加一个 default = ...,它指示您从中克隆存储库的位置。鉴于该默认行为,很自然地将该存储库视为“主”存储库,但从根本上说它没有什么特别之处。