2014-01-09 4 views
52

우리 프로젝트에서 미리 빌드 된 바이너리를 사용하여 빌드 시간을 줄이기로 결정했습니다. 매주/매월 안정적인 릴리스를 만들어 저장소에 커밋합니다. 빌드는 소스에서 모든 것을 빌드하는 대신이 바이너리를 사용합니다..svn 폴더 크기 줄이기

빌드 속도가 환상적입니다. 그러나 놀랍지도 않지만 SVN 체크 아웃 크기는 정말 커집니다. 현재 트렁크는 ~ 22   GB입니다. 나는 이것이 Subversion의 의도 된 사용법이 아니라는 것을 알고 있습니다. 그러나 현재로서는 대안이 없습니다.

하지만 현재 상황을 개선하고 싶습니다. .svn 폴더는 디스크의 트렁크 크기에 큰 기여를합니다. 바이너리가 업데이트되면 .svn 폴더에 여러 개의 기본이 유지되는 것 같습니다. 즉, 바이너리가 4   GB 인 경우 .svn에 사본이 있습니다. 업데이트 된 경우 .svn 폴더에는 원래 기본 폴더와 새 기본 폴더가 있으며 해당 파일에 대해 최대 8 개의  GB가 있습니다.

특정 파일에 대해 .svn 폴더에 Base를 보관하지 않도록 Subversion에 알릴 수 있습니까? 구글을 통해 나는 비슷한 질문을 발견했다. How to decrease .svn folder size?.

시몬받은 대답은

  • 사용 (필자는 바이너리를 필요로하는 나를 위해 작동하지 않습니다) 부분 체크 아웃
  • 이 아직 서브 버전의 기능이 아닙니다
  • 이 논의이었다 , 적어도 Subversion 1.8까지 기능이되지 않을 것입니다.

나를 위해 다행히 Subversion 1.8이 릴리스되었습니다. 이 기능이 추가 되었습니까?

나는 이것을 the release notes에서 발견하지 못했습니다. "디렉토리 및 속성 저장 감소"가 유망 해 보이지만.

+1

이것은 실제로 Subversion이 빛나는 곳이 아닙니다. 인공물을 저장하고 빌드 스크립트로 해결 (가져 오기)하기 위해 인공물이나 넥서스를 조사해야합니다. – thekbb

+0

슬프게도 우리는 이것을 알고있었습니다. 하지만 svn을 사용하면 편리합니다. 과거에는 다른 프로젝트에서 Maven을 사용했습니다. 그러나 분명히, 그것은 많은 사람들의 입에 나쁜 맛을 남겼습니다. 다음으로는 메이븐 (Maven)처럼 설명 할 수있는 커스텀 툴이있다. (물론 메이븐의 모든 문제를 해결했다.) 그것은 너무 나쁜 맛을 남겼습니다. 최근 프로젝트에서 우리는 방금 svn을 활용했습니다. –

답변

49

이 시점에서 원시 코드를 저장할 필요가 없습니다. 그것은 이야기되었지만 실제로는 쉽게 해결할 수있는 문제가 아닙니다. 왜냐하면 선택적으로 제거함으로써 여러 가지 유스 케이스 상황이 존재하기 때문입니다.

With 1.7 the pristine storage was changed 그리고 어떤 경우에는 실제로 상황이 1.7 이전보다 나빠질 수 있습니다. 이제 Pristines는 pristine의 해시에 의해 명명 된 파일에 저장됩니다. 따라서 여러 개의 동일한 파일이있는 경우 중복 된 원시 파일을 저장하지 않습니다. 그러나 우리는 또한 더 이상 원시 시대를 청소하지 않습니다. 그래서 그들은 계속해서 쌓아 올립니다. svn cleanup을 사용하여 사용되지 않은 pristines을 제거 할 수 있습니다.

사용하지 않는 pristines를 유지하는 것이 중요합니다. 분기를 전환 할 때 이미 1.8에서 원래 상태 인 것을 다운로드 할 필요가 없습니다. 오히려 svn cleanup 명령보다 TortoiseSVN을 클라이언트의 정리 명령을 사용하여 사람들을 위해

+0

감사합니다. 나는 이것이 대답 일 것이라고 의심했다. 그러나 나는 그렇지 않다고 생각했다. svn 정리 팁은 알아두면 편리합니다. 우리는 여분의 깨끗한 것을 제거 할 수 있다고 추측하지만 아직 테스트하지는 않았습니다. 나는 md5가 유일한 사본을 유지하는 데 사용되는 것을 좋아한다. 그러나 오래된 사본을 제거하지 않는 것은 "틀린 것 같습니다". 지점 전환은이 동작이 지원하는 시나리오입니다. 그러나 나는 옛날 원시 시대가 결코 다시 사용되지 않을 것이라는 것을 "의심한다". 즉, 디스크 공간을 빨아 들일 것입니다. 우리의 권장하지 않는 svn 사용으로 인해 이것이 일반적인 프로젝트에도 적용된다고 생각됩니다. –

+0

우리는 동의합니다. http://subversion.tigris.org/issues/show_bug.cgi?id=4071 –

+2

[svn update --set-depth = exclude] (http : //stackoverflow.com/a/8446590/1904815) 12 GiB를 저장했습니다. – JonnyJD

19

.svn 폴더 크기가 진공 자연 그대로 복사 옵션이 체크되어 있는지 확인하여 감소 될 수있다 또한

enter image description here

, 그것은 추천합니다 here으로 표시된 작업 복사본의 최상위 수준에서 정리합니다.this answerSVN change log 따르면

[편집]

, svn cleanup는 원시 사본 (/vacuum)를 진공으로 할 수있는 옵션을 갖는다. 이것은 기본적으로 1.8부터 시작됩니다.