使用mercurial作为subversion的智能本地缓存时,维护一个月的历史记录

时间:2009-12-03 00:32:46

标签: svn mercurial

这里有类似的问题和here,但它们并不相同,因为他们在一般意义上要求一起使用mercurial和subversion。

通过Mercurial and Subversion page阅读,有四个选项,hgsubversion,mq,convert和hgsvn。 hgsubversion和转换都需要存储库的完整本地副本,而我的存储库非常大(10+演出),主要是二进制签入对我没用,所以我不热衷于这个选项。另一方面,mq不允许任何离线历史搜索,因此失败了想要使用mercurial的一个主要原因。

这使选项缩小到使用hgsvn。我已经安装了这个并正在玩它,它似乎做了我想要的大部分。由于各种原因,主要是与磁盘空间有关,我真的不关心六个多月前的历史,所以我希望能够保持仅六个月的历史。但是,当您使用hgimportsvn设置svn树的副本时,将初始存储库设置为import,并且当它们移出六个月窗口时,无法(使用hgsvn)删除这些初始修订。

查看https://www.mercurial-scm.org/wiki/EditingHistory似乎没有一种易于自动化的方法。 HistEdit扩展允许完全按照我想要的方式执行,但似乎不是可编写脚本的。我对MQ的理解是它不会做我想要的,因为它永远不会删除第一个修订版,尽管它可能用于折叠一些中间修订版。

编辑:尝试澄清一下我的问题。

基本上,我想要做的是在我的mercurial存储库中保留最后1000个版本的subversion。这很容易开始:

hgimportsvn -r$((TRUNKREV-1000)) $TRUNKURL

然而,一周之后,我的mercurial存储库现在有1200个版本,所以我想通过删除/折叠前200个修订版将其再次切换回1000.

有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

你不能使用转换扩展名和--config convert.svn.startrev = STARTREV选项吗?