2

我有一个本地 mercurial 存储库。我在我的谷歌驱动器文件夹中的一个单独文件夹中使用克隆备份它。我会时不时地进入 google drive repo 并进行 hg pull,然后 google drive 会负责备份它。但我想交换这些职责,以便我的本地是谷歌驱动器中的一个克隆。换句话说,今天我这样做:

从我的本地 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 = *****

这是谷歌驱动器中克隆的内容

[paths]
default = c:\source\SwissArmyKnife
4

1 回答 1

4

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

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

[paths]
gdrive = c:\googledrive\source

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

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

因此(最后),如果你调整.hg/hgrcc:\source folder的包含

[paths]
default = c:\googledrive\source

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

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

于 2015-02-15T21:09:48.803 回答