尝试git-diet
16 May 2015
前言
在克隆https://github.com/numbbbbb/githuber.info之后,发现版本库无比巨大,是工作区文件的8倍,发issue,并寻找缩减版本库的方法时,看到git-diet。以下是一些探索。
git-diet
git-diet项目的本体就是封装了git操作的两个shell脚本: find_fattest_objects.sh
和 purge_objects.sh
。
-
find_fattest_objects.sh
- 查找版本库中巨大的对象, 其使用说明如下find_fattest_objects.sh [-n <number_of_objects>] [-d] [-f] OPTIONS -n 显示版本库中最大文件的数目(默认为 10) -d 过滤掉当前依然在项目中的文件 -f 只显示文件名和路径 (在使用管道时,非常有用)
-
purge_objects.sh
- 将这些对象从版本库中删除purge_objects.sh <file>... OPTIONS file 一个或多个需要删除的文件, 以空格分隔
使用实战
最优方法,使用管道,不过速度太慢
./find_fattest_objects.sh -n1000 -d -f | xargs purge_objects.sh #项目库中的对象比较多时,执行比较慢。
顺带了解了一下
xargs
命令。
次有等方法,有些手动执行的辅助的shell脚本:
remove_file=(images/guzhang.d18d4737.gif node_modules/*.* bower_components/*.* bower_components/echarts/doc/**/*.* bower_components/echarts/doc/**/*.* bower_components/echarts/*.* bower_components/echarts/doc/asset/img/*.* .tmp/**/*.* .tmp/*.* bower_components/echarts/doc/slide/img/*.* node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor/pngquant bower_components/echarts/doc/asset/img/example/*.* bower_components/echarts/build/source/*.*)
for i in ${remove_file[*]}; do
./purge_objects.sh $i;
done
shell的数组使用格式真奇葩。
最蠢方法 纯粹手动:
./find_fattest_objects.sh -n100
# 手动执行删除
./purge_objects.sh images/guzhang.d18d4737.gif
./purge_objects.sh node_modules/*.* bower_components/*.*
./purge_objects.sh node_modules/**/*.* bower_components/**/*.*
./purge_objects.sh bower_components/echarts/doc/**/*.*
./purge_objects.sh bower_components/echarts/*.*
./purge_objects.sh bower_components/echarts/doc/asset/img/*.*
./purge_objects.sh .tmp/**/*.* .tmp/*.*
./purge_objects.sh bower_components/echarts/doc/slide/img/*.* node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor/pngquant bower_components/echarts/doc/asset/img/example/*.* bower_components/echarts/build/source/*.*
# 以及其他的一些杂七杂八的东西
使用总结:
可以缩减版本库的大小。确实少了30mb,但是,只能缩减本地版本库大小,无法推送到远程已存在的库中。只能用来初始化提交时减少版本库的大小,不能用来减少已存在的库的大小。
后记
天下殊途而同归,一致而百虑。我就是从最蠢的方法开始操作的,所以我是二货。
参考文献
傲娇的使用Disqus