我如何从不同的存储库中检出 mercurial 修订版?

How do I check out a mercurial revision from a different repository?

在 git 中,如果您将两个远程存储库设置为 defaultother 并且它们都包含 cool-feature 分支但是它们不同步,您可能有这样的东西:

* <--- HEAD, cool-feature, default/cool-feature
|
|
o another commit
|
|
o commit for awesome
|
|
o <--- other/cool-feature
|
.
.
.

我可以通过 git checkout other/cool-featuregit 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 extension。警告:这个扩展改变了书签的正常行为(事实上,使它更像 Git)。