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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TortoiseHG:只拉动选定的变更集?相关的知识,希望对你有一定的参考价值。

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

  1. 将5个变化推回到回购A.
  2. 将回购B的路径更改为回购A的路径
  3. 对于回购B,单击“检查传入更改集”按钮

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

我怎样才能从列表中获得第一个和第三个变更集?可能吗?

谢谢! :)

答案

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

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

另一答案

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

C:example>hg glog --template "rev{rev}:{desc}
"
@  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}
"
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}
"

@  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,而只属于A的变更集可以直接检入A:

C:example>hg glog --template "rev{rev}:{branch}:{desc}
"

@  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

以上是关于TortoiseHG:只拉动选定的变更集?的主要内容,如果未能解决你的问题,请参考以下文章

TortoiseHG 提交非常慢

没有带有拉动刷新的互联网消息 webview 片段

TortoiseHg 3.6.3打破了mercurial keyring?

如何检查TFS服务器上是否有新的更改?

拉动修订未被标记为公共阶段

TortoiseHg - 显示未推送的提交