我有一个本地的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
答案 0 :(得分:3)
你的问题揭示了一个有启发性的误解。当有人说Mercurial是分布式版本控制系统(DVCS)时,就意味着没有'主'存储库。
当您键入hg push <repo>
或hg pull <repo>
时,Mercurial会将当前存储库中的更改集与<repo>
中的更改集进行比较,然后推送或拉出更改集以使此更改集与远程更改集保持一致。 <repo>
可以通过网址(即ssh://...
或http://...
)表示,也可以通过.hg/hgrc
中指定的简写表示:因此,在您的情况下,您可以添加
[paths]
gdrive = c:\googledrive\source
这意味着你可以写hg push gdrive
或hg pull gdrive
而Mercurial会知道你的意思。您可以在此处列出多个路径。
然而,有一条“神奇”的道路。如果您有路径default
,那么当您不指定<repo>
时,这就是Mercurial使用的路径。
因此(最后),如果您调整.hg/hgrc
中的c:\source folder
以包含
[paths]
default = c:\googledrive\source
然后在该目录中,普通hg push
将同步变更集与该驱动器。
克隆存储库(hg clone
)时,Mercurial通常会添加到.hg/hgrc
一个default = ...
,表示您从中克隆存储库的位置。鉴于这种默认行为,将该存储库视为“主存储库”非常自然,但它并没有什么特别之处。