2011-03-07 3 views
3

많은 쓰레기가 담긴 오래된 거대한 프로젝트를 보관할 것입니다. 다시는 필요가 없기를 바라지 만 중요한 모든 것을 버전 제어하에두고 싶습니다. 프로젝트의 혼란 때문에 소스가 무엇이고 어떤 것이 사라질 수 있는지를 말하는 것은 쉽지 않습니다 (makefile, 아니 make clean, 아무 것도 없음). 그래서 나는 거의 모든 것을 넣고 배제를위한 최대 파일만을 고려하고 싶습니다.커밋 할 파일의 공간 요구 사항을 찾는 방법은 무엇입니까?

커밋 할 파일 (또는 준비된 파일)을 크기와 함께 어떻게 나열 할 수 있습니까?

나는 스크립트를 쓸 수는 있지만, 더 간단한 해결책이되기를 바랍니다. Cygwin에서 작업 중이며 사용할 수있는 유일한 gui는 git gui이며 파일 크기는 표시되지 않습니다. 그렇지 않으면 내가 원하는 것에 완벽 할 것입니다.

+1

을 "하지만 내가 원하는 중요한 모든 것을 버전 제어하에 두라. "- 중요한 것은 이미 소스 제어하에 있습니다. –

+0

아니요, VC를 전혀 사용하지 않는 사람이 만든 1 인 프로젝트입니다. SVN을 사용하여 변경 사항을 적용하고 나중에 GIT로 변환 한 다음 중요한 파일을 모두 추가하려고하므로 어딘가에있는 경우에만 안전합니다 ... – maaartinus

답변

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

+0

죄송합니다, 꽤 혼란 스러워요! 나는 대답을 업데이트했다. 이것이 더 유용하길 바란다. – samplebias

+0

'git ls-files -t'가 추적되지 않은 파일에 대해 아무 것도 인쇄하지 않는다는 점을 제외하고는 훨씬 더 좋아 보입니다. man 페이지는 나를'git status --porcelain'으로 이끌었습니다.이 파일은 무시됩니다. 간단한'grep'과 해결되었습니다. – maaartinus

0

내가 힘내 모르는,하지만 당신은 의욕을 사용하는 경우, 당신의 조합을 사용할 수 있습니다 줄 것이다 디렉토리 트리의 상단에 첫 번째 근사, du -sk .

ls -laS 
hg status 
0

을 당신에게 필요한 공간. git gc을 수행 한 후에는 과대 평가되었을 수 있습니다.

그러나 프로젝트를 폐기하는 시점에 도달하기 오래 전에 버전 관리를 사용 했어야합니다.

관련 문제