如何在Mercurial中将折叠的修订补丁应用于主干?

时间:2010-09-15 22:19:57

标签: mercurial

我正在寻找执行以下操作的最佳做​​法:

当我需要实现功能或修复错误时,我正在从主要的(主干)创建新的Mercurial存储库。 然后,在几天或几周内,我在新创建的存储库中实现任务,进行提交并定期与主干合并。在新存储库中的代码将通过所有代码审查之后,我应该提供一个存储库,其中所有更改都会折叠为单个修订版。

我这样做的常用方法(rdiff extension应该启用):

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg diff ~/repos/new > new.diff
patch -p1 < new.diff
hg commit

除非在〜/ repos / new的更改中存在二进制文件,否则这几乎可以正常工作。另一种方式可能是:

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg pull ~/repos/new
hg update
hg rollback
then resolve possible conflicts and manually commit the changes

两种方式都让我看起来有点丑陋和非原生,所以我看看这个操作如何简化。我玩过rebase extension,但似乎hg rebase --collapse命令不适用于上述工作流程。

欢迎任何想法。

3 个答案:

答案 0 :(得分:1)

对于mercurial队列来说,这听起来很好。

答案 1 :(得分:0)

我使用histedit扩展程序执行类似操作。

我的工作流程如下:

  • 克隆中央仓库
  • 提交对本地仓库的增量更改
  • 克隆我的本地仓库以制作折叠仓库
  • hg histedit并根据需要选择/弃置/弃置修订
  • hg push折叠后的回购至中央仓库
  • 将中央仓库拉到本地或从头开始刷新本地

我确保通过向本地repo根目录中的default-push文件添加无效的.hg/hgrc路径,我的本地仓库永远不会被推送到中央仓库。

答案 2 :(得分:0)

已解决:只需添加

即可
[diff]
git = True

到您的hgrc文件,然后使用我的第一个rdiff扩展解决方案,将patch替换为hg import

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg diff ~/repos/new > new.diff
hg import new.diff
hg commit