Mercurial:如何将指定的旧版本压缩/组合成一个?

时间:2011-08-29 19:23:42

标签: mercurial

我有一个存储库。在它的生命周期中,我从中删除了许多不必要的文件(我决定让它们保持无版本化)。

hg remove
hg commit

回购越来越大。

我决定摆脱从最初版本到修订版本的旧版本,其中删除了大量文件(让我们将其命名为X)。 我想要的其他单词将这些修订(从初始到X)组合成一个初始修订。

但同时要保留以下修订的历史(X + 1等)。

我用谷歌搜索解决方案,但失败了。

并没有发现比这更聪明的事情:

hg init newrepo
cd oldrepo
hg archive -r X newrepo
hg export -r X+1: -o "~/patches/%R-%h.diff"
cd newrepo
hg commit -A -m 'initial release (after archiving)'
hg import ~/patches/*.diff

该死的,几个成功应用补丁后 我收到了:

Hunk #1 FAILED at xxx
Hunk #2 FAILED at xxx
2 out of 2 hunks FAILED -- saving rejects to file xxx.rej
abort: patch failed to apply

我做错了什么?

我有1个没有分支的仓库(更准确地说是修订版X所有分支都已合并)。

第二个解决方案是 * hg转换为svn * hg从revisiob X + 1转换为mercurial

使用python backtrace失败(可能是因为我们的repo有大约3K文件)。

3 个答案:

答案 0 :(得分:1)

要从存储库中过滤掉文件,您希望将hg convert(Mercurial与Mercurial)与--filemap参数一起使用(有关详细信息,请参阅文档)。请记住,受影响的变更集ID(及其所有后代的ID)将发生变化。

答案 1 :(得分:0)

查看Collapse扩展程序,它似乎可以执行您想要的操作。

答案 2 :(得分:0)