2010-10-13 71 views
13

好的,当我年轻的时候,我把重要的大文件(比如资源文件,dll等)放在我的mercurial回购站里。我发现它的大小是如此之大,我不能轻易推入到bitbucket,删除历史上的文件以节省一些空间在mercurial

任何方式删除这个文件历史记录容易

我把所有这些文件放在/ res和/ dll路径中。

编辑:

这是一个解决方案,但它会删除历史记录的一部分,因此也许有更好的解决方案。 Mercurial Remove History

+0

重复与http://stackoverflow.com/questions/1898600/cleaning-out-a-mercurial-repository – 2011-05-17 09:57:21

回答

18

你最好的办法是使用转换扩展,但警告你会得到一个完全不同的回购结束。每个哈希将会不同,每个克隆的人都需要删除他们的克隆并重新克隆。

这就是说,这里就是你要做的:

创建一个名为filemap.txt一个filemap文件,其中包含:

exclude res 
exclude dll 

,然后运行这个命令:

hg convert --filemap filemap.txt your-source-repository your-destination-repository 

例如:

hg convert --filemap filemap.txt /home/you/repos/bloatedrepo /home/you/repos/slenderrepo 

这会让你得到一个全新的回购,除了/ res和/ dll中任何文件的历史记录外,它都具有所有历史记录,但就mercurial(和bitbucket)而言,它将成为一个新的无关回购。

+0

转换开关没有找到出于某种原因它被删除? – keyoke 2011-03-23 12:19:17

+1

我不好,你必须手动添加下面的mercurial.ini之前它将工作 [扩展名] hgext.convert = – keyoke 2011-03-23 12:23:34

+0

看起来像一个好方法,但它仍然工作,如果我想删除特定的文件?说一个特定的DLL?你能用吗?: 排除MyDll.dll – 2014-02-14 09:39:47

相关问题