我们目前正在将我们的SVN仓库迁移到托管在Bitbucket上的GIT中。
我使用subgit将所有分支/历史记录导入本地电脑(Windows)上的裸仓库。
该仓库很大(导入后为7.42 GB),因为它还包含有关SVN的信息,如版本号,以提供Git和SVN之间的双向同步方式(我只对单向SVN到GIT感兴趣)。
我创建了一个导入裸仓库的本地克隆,并将所有分支推送到bitbucket。
几个小时后,仓库被完全上传。 BitBucket现在给了我有关仓库大小的警告。 我检查了大小,只有1.1GB。这不如裸仓库那么大,但对于快速仓库来说还是太大了。
经过使用BFG的试验,我成功地删除了一些大型DLL / SQL导出文件,并使用以下命令在裸仓库中实现了此操作(我只使用克隆来进行推送,而没有所有与svn相关的引用)。
这个过程花了一些时间,之后git_find_big.sh脚本不再显示这些大型SQL文件。但是在将事情推回到bitbucket(作为新的repo,而不是强制推送)之后,它变得更大了(1.8GB)。
你能提供一个可能的解释吗?
我不知道这是否重要,但我们在svn中使用了非标准的分支/标记模型。这导致像
除了这些问题,我注意到在
java -jar bfg.jar --delete-files '{''specialized 2015''','''specialized,''insert-pcreeks''}.sql' --no-blob-protection
java -jar bfg.jar --delete-files 'Incara.*.dll' --no-blob-protection Incara.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
这个过程花了一些时间,之后git_find_big.sh脚本不再显示这些大型SQL文件。但是在将事情推回到bitbucket(作为新的repo,而不是强制推送)之后,它变得更大了(1.8GB)。
你能提供一个可能的解释吗?
我不知道这是否重要,但我们在svn中使用了非标准的分支/标记模型。这导致像
/refs/heads/archive/some/path/to/branch
这样的分支似乎工作得很好,删除它们也不会影响大小。除了这些问题,我注意到在
git_find_big.sh
输出中出现了一些XML文件:size,pack,SHA,location 12180,1011,56731c772febd7db11de5a66674fe6a1a9ec00a7 repository/frontend.xml 12074,1002,0cefaee608c06621adfa4a9120ed7ef651076c33 repository/frontend.xml 12073,1002,a1c36cf49ec736a7fc069dcc834b784ada4b6a06 repository/frontend.xml 12073,1002,1ba5bd92817347739d3fba375fc42641016a5c1d repository/frontend.xml 12073,1002,e9182762bfc5849bc6645fdd6358265c3930779f repository/frontend.xml 12073,1002,dff5733d67cb0306534ac41a4c55b3bbaa436a2e repository/frontend.xml 12072,1002,8ee628f645ce53d970c3cf9fdae8d2697224e64c repository/frontend.xml 12072,1002,1266dee72b33f7a05ca67488c485ea8afc323615 repository/frontend.xml
这些文件包含我们使用的Web平台的前端逻辑,确实相当大。 但是它们应该被视为文本,对吗?因此,我不明白为什么它们在上面的输出中显示为单独的对象。我对吗,这种情况不应该发生?
SVN导入还导致了一些空提交(例如,当SVN创建或移动分支时,它需要一个新的提交)。我想这些只能使用filter-branch来删除?
抱歉,我有很多问题! 有人能帮我解决这个问题吗?
谢谢,
Piet
git gc
步骤后,清理后的本地仓库大小是多少?特别是 objects/pack 文件夹的大小是多少?此外,一个新的本地 BitBucket 仓库克隆的大小是多少? - Roberto Tyley