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

时间:2015-02-15 19:26:59

标签: mercurial hgrc

我有一个本地的mercurial存储库。我用一个单独的文件夹中的克隆备份它,它位于我的google驱动器文件夹中。我一次又一次地进入谷歌驱动器回购并做一个hg拉,谷歌驱动器负责支持它。但我想交换这些责任,以便我的本地是谷歌驱动器中的一个克隆。换句话说,今天我这样做:

从我当地的c:\ source文件夹: 做的事情 2. hg commit 3. cd c:\ googledrive \ source 4. hg pull

我宁愿: 从我当地的c:\ source文件夹: 做的事情 2. hg commit 3. hg push

我不知道如何在我的hgrc文件中做到这一点。有人可以帮忙吗? 这是我的c:\ source hgrc的内容:     #由TortoiseHg设置对话框生成

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

[ui]
username = *****

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

[paths]
default = c:\source\SwissArmyKnife

1 个答案:

答案 0 :(得分:3)

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

当您键入hg push <repo>hg pull <repo>时,Mercurial会将当前存储库中的更改集与<repo>中的更改集进行比较,然后推送或拉出更改集以使此更改集与远程更改集保持一致。 <repo>可以通过网址(即ssh://...http://...)表示,也可以通过.hg/hgrc中指定的简写表示:因此,在您的情况下,您可以添加

[paths]
gdrive = c:\googledrive\source

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

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

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

[paths]
default = c:\googledrive\source

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

克隆存储库(hg clone)时,Mercurial通常会添加到.hg/hgrc一个default = ...,表示您从中克隆存储库的位置。鉴于这种默认行为,将该存储库视为“主存储库”非常自然,但它并没有什么特别之处。