在git中,如果您有两个远程存储库设置为default
和other
,并且它们都包含cool-feature
分支,但它们不同步,则可能会出现以下情况:
* <--- HEAD, cool-feature, default/cool-feature
|
|
o another commit
|
|
o commit for awesome
|
|
o <--- other/cool-feature
|
.
.
.
我可以通过做git checkout other/cool-feature
和git checkout default/cool-feature
来来回跳跃。
我该如何在Mercurial中实现同等功能?这可能吗?
如果您使用书签来模拟Git分支,并且您从书签分叉的两个存储库中提取,那么其中一个将被标记为name@repo
,其中name
是书签的名称,repo
是.hg/hgrc
的[paths]
部分中的标识符,或者在没有此类条目时是唯一标识符。
然而,如果书签没有分歧,但一个修订是另一个修订的祖先,那么你只会得到最新的一个。您仍然可以通过以下方式从远程存储库中单独获取书签:
hg pull -B name repo1
hg update name
然后:
hg pull -B name repo2
hg update name
或者,您也可以使用hg id
来计算远程书签对应的节点:
hg update -r $(hg id -i -r name repo1)
或:
hg update -r $(hg id -i -r name repo2)
请注意,如果您计划频繁来回切换,您可能需要使用本地标记或其他书签来标记修订,因为访问远程存储库可能会有点慢。
如果这是您经常需要的东西,您可能需要考虑remotenames扩展。警告:这个扩展在很大程度上改变了书签的正常行为(事实上,它更像Git)。