【问题标题】:TortoiseHG: Only pull selected changesets?TortoiseHG:只拉取选定的变更集?
【发布时间】:2012-08-20 11:55:18
【问题描述】:

我有 2 个存储库 A 和 B。我对 A 进行了 5 处更改,但其中只有 2 个也应该出现在 B 中。所以这是我尝试的:

  1. 将 5 项更改推送到 repo A
  2. 将 repo B 的路径更改为 repo A 的路径
  3. 单击 repo B 的“检查传入变更集”按钮

现在我看到了我为 repo A 所做的 5 个更改。这就是我卡住的地方,我现在怎么才能只获得 5 个更改集中的 2 个?我试过“拉到这里”,但这在我的情况下不起作用,它会将所有变更集放在我选择的下面。

如何从列表中获取例如第一个和第三个变更集?有可能吗?

谢谢! :)

【问题讨论】:

    标签: mercurial tortoisehg


    【解决方案1】:

    当您在存储库之间拉取变更集时,您不能跳过它们之间的变更集。如果一个变更集在两个存储库中有不同的父项,则它不是同一个变更集。

    您可以通过导出所需变更集的patches 来完成您的目标,然后将它们导入另一个存储库。这样,您就可以从 B 中的存储库 A 中获得所需的更改,但更改集在两个存储库中不会具有相同的 nodeid

    【讨论】:

    • 移植扩展可以帮助解决这个问题。
    • @SteveKaye transplant 在同一存储库中的分支之间移动变更集,而不是两个不同的。
    • 不,这是不正确的。内置的graft 命令可以做到这一点,transplant 扩展可以在存储库之间移动它们,但没有graft 更智能的合并能力。
    【解决方案2】:

    听起来 A 和 B 是同一个存储库的克隆。如果是这种情况,分支可能就是您所需要的。如果您有 A 包含的历史记录:

    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    @  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    o  rev1:change2
    |
    o  rev0:change1
    

    如果您的 B 最初只是 rev0rev1,而您想要将 rev3rev5 添加到其中,则可以更新为 rev1 并将 rev3rev5 添加到其中它:

    C:\example>hg update 1
    0 files updated, 0 files merged, 5 files removed, 0 files unresolved
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    o  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    @  rev1:change2
    |
    o  rev0:change1
    
    C:\example>hg graft 3 5
    grafting revision 3
    grafting revision 5
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    
    @  rev8:change6      <--- contains change 1, 2, 4, 6
    |
    o  rev7:change4
    |
    | o  rev6:change7    <--- contains changes 1-7.
    | |
    | o  rev5:change6
    | |
    | o  rev4:change5
    | |
    | o  rev3:change4
    | |
    | o  rev2:change3
    |/
    o  rev1:change2
    |
    o  rev0:change1
    

    为了避免变更集的重复和一些预先计划,需要同时在 AB 分支上的变更可以检入 B 并合并到 A,而只属于on A 可以直接签入A:

    C:\example>hg glog --template "rev{rev}:{branch}:{desc}\r\n"
    
    @  rev8:A:change7     <--- contains changes 1-7.
    |
    o    rev7:A:Merge
    |\
    | o  rev6:B:change6   <--- contains change 1, 2, 4, 6
    | |
    o |  rev5:A:change5
    | |
    o |  rev4:A:Merge
    |\|
    | o  rev3:B:change4
    | |
    o |  rev2:A:change3
    |/
    o  rev1:default:change2
    |
    o  rev0:default:change1
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多