![]() |
1
0
补丁 这在Mercurial页面中有部分说明。” Working with Subversion Repositories ".
|
![]() |
2
1
使用mercurial和hg subversion,您可以将svn repo克隆为mercurial repo,然后对其使用MQ(或只是分支)来存储更改。当上游svn回购更新时,您将
|
![]() |
3
1
Mercurial Queues , Rebase Convert 用于跟踪堆积在上游源顶部的本地修改的扩展。 转换 扩展以生成具有特定分支历史记录的本地Mercurial克隆,例如:
转换
然后可以从中创建任意数量的本地克隆
设置本地克隆后,您可以为自己的修补程序提供两个选项:
具有“正常”变更集的本地变更
和一个当地的
变更集(3)中的本地更改对于上游Subversion人员是不可见的,但是您可以在本地历史中看到它们被合并了 两次
您甚至可以在 命名 分支,例如通过提交(3)的更改:
使用Mercurial队列的本地更改Mercurial队列 结合 重新基准 扩展使您可以轻松地将修补程序保持在本地svn镜像的“顶部”。重新调整本地修补程序的整个过程通常与以下步骤一样简单:
第一步是在svn分支镜像的一个克隆中创建本地“修补程序队列”:
您可以在原始svn分支提交的基础上创建任意数量的本地修补程序。例如,我的本地FreeBSD“head”镜像现在包括以下修补程序:
当然有可能保存一个包含数百个更改的本地堆栈。MQ对于本地开发补丁、微调补丁、拆分补丁或将它们加入到更大的补丁集中,以及与 重新基准 扩展它是一个强大的方法,让您的本地补丁集'移动'沿上游的历史。 上一个示例中变更集(3)补丁的等效历史变更如下所示:
再过几天,您将更多的更改从subversion转换为
你可以尽可能多次地重新调整你的本地补丁。您甚至可以在每次迭代中重新设置多个修补程序的基础。您可以在多修补程序队列的“中间”插入修补程序。你可以删除补丁。您可以加入diff,将它们拆分为更多的面片,重新排列面片的堆叠顺序。通常,您可以根据需要多次、频繁地重写和微调修补程序队列。 |