2011-03-07 58 views
3

我要歸檔一個包含大量垃圾的舊大型項目。我希望我永遠不會再需要它,但我想把所有重要的東西都放在版本控制之下。由於項目混亂,要說什麼來源和什麼可以消失並不容易(沒有makefile,沒有make clean,沒有)。 所以我想放在那裏幾乎所有,只考慮排除最大的文件。如何找出要提交的文件的空間需求?

如何列出要提交(或將要提交)的文件以及它們的大小?

我可以寫一個腳本或任何其他,但希望有一個更簡單的解決方案。我正在Cygwin下工作,唯一可用的gui是git gui,它不顯示文件大小。否則,它對我所需要的是完美的。

+1

「但我想把所有重要的東西都放在版本控制之下「 - 當然重要的東西已經在源代碼控制之下了? – 2011-03-07 00:47:02

+0

不,這是一個沒有使用VC的人的單人項目。當我處理它時,我只使用SVN進行了更改,後來將其轉換爲GIT,現在我想添加所有其他可能重要的文件,所以它在某處安全以防萬一... – maaartinus 2011-03-07 01:08:16

回答

2

你可以試試這個。它會查找大於1M的所有文件,並將其從大到小排序。打印的文件大小是按字節:

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

輸出:

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

更新時間:環比由find和返回的文件打印他們git狀態:

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

但它不告訴我他們已經被追蹤。那裏有很多大文件,其中一些很重要,其中一些已經被追蹤,大混亂... – maaartinus 2011-03-07 03:00:33

+0

哎呀,聽起來很混亂!我更新了答案,希望這會更有用。 – samplebias 2011-03-07 03:29:30

+0

這看起來好多了,除了'git ls-files -t'似乎沒有爲未跟蹤文件打印任何內容。這個手冊頁讓我變成了'git status --porcelain',它會打印這個文件的'''',除非它們被忽略。一個簡單的'grep'就解決了。 – maaartinus 2011-03-07 06:49:18

0

我不知道混帳,但如果你正在使用水銀,你可以使用的組合:在目錄樹的頂部

ls -laS 
hg status 
0

對於第一近似,du -sk .會給你需要的空間。在你做git gc之後,它可能被高估了。

但是在你達到退役項目的時間點之前,你應該早已使用版本控制。

相關問題