【问题标题】:How do I check out a mercurial revision from a different repository?如何从不同的存储库中签出 mercurial 修订版?
【发布时间】:2015-11-17 19:36:44
【问题描述】:

在 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 中进行等效操作?有可能吗?

【问题讨论】:

    标签: mercurial multiple-repositories


    【解决方案1】:

    如果您使用书签来模拟 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)。

    【讨论】:

    • Remotenames 扩展,从我的 POV 来看,对于任务来说太极端了。 Remote Branches(远程名称的父级)也可以
    猜你喜欢
    • 2011-05-06
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多