TortoiseHG:只拉动选定的变更集?

时间:2012-08-20 11:55:18

标签: mercurial tortoisehg

我有2个存储库A和B.我对A做了5次更改,但是其中只有2个也应该出现在B.所以这就是我尝试过的:

  1. 将5个更改推送到repo A
  2. 将回购B的路径更改为回购A的路径
  3. 单击repo B的“检查传入更改集”按钮
  4. 现在我看到我为回购A所做的5次更改。这是我被困的地方,我现在怎么才能获得5个变更集中的2个?我试过“拉到这里”,但这不适用于我的情况,它会将所有变更集置于我选择的变更集之下。

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

    谢谢! :)

2 个答案:

答案 0 :(得分:2)

当您在存储库之间提取变更集时,您无法跳过其间的变更集。如果变更集在两个存储库中具有不同的父项,则它不是相同的变更集。

您可以通过导出所需的更改集patches来完成所需的操作,然后将它们导入到其他存储库中。这样,您可以从B中的repo A获得所需的更改,但更改集在两个存储库中不会具有相同的nodeid

答案 1 :(得分:1)

听起来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,则可以更新为{{1将rev1rev3移植到其上:

rev5

为避免重复变更集的重复和一些预先规划,需要在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 A分支上进行的更改可以检入B并合并到{{1而只能属于A的变更集可以直接检入A:

B