How to find out the space requirements of files to be committed?

六眼飞鱼酱① 提交于 2019-12-08 19:42:34

问题


I'm going to archive an old huge project containing a lot of garbage. I hope I'll never need it again, but I want to put all important things under version control. Because of the chaos in the project, it's not easy to say what are the sources and what can go away (there's no makefile, no make clean, nothing). So I'd like to put there nearly everything and consider only the largest files for exclusion.

How can I list the files to be committed (or to be staged) together with their size?

I could write a script or whatever, but hope for a simpler solution. I'm working under Cygwin and the only gui available is git gui which doesn't show the file sizes. Otherwise it'd be perfect for what I need.


回答1:


You could try this. It finds all files larger than 1M and sorts them from largest to smallest. The file sizes printed are in bytes:

cd ~/files_to_archive
find . -type f -size +1M -printf '%s %p\n' |sort -nr

Output:

74751072 ./linux-2.6.38-rc4.tar.bz2
34686037 ./git-source.tar.gz
14026384 ./Python-2.7.tar.gz

Updated: loop over the files returned by find and print their git status:

git ls-files -t `find . -type f -size +1M |xargs`



回答2:


To a first approximation, du -sk . at the top of the directory tree will give you the space needed. After you do git gc, it might be an overestimate.

But you should have been using version control long before you reached the point of retiring the project.




回答3:


I don't know about Git, but if you're using Mercurial, you could use a combination of:

ls -laS
hg status


来源:https://stackoverflow.com/questions/5214625/how-to-find-out-the-space-requirements-of-files-to-be-committed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!