2013-06-01 3 views
12

버전 관리 시스템이 SVN이고 git을 사용하고자하는 프로젝트에서 작업하고 있습니다. 나는 자식 SVN 복제본을 만들었지 만 git status은 대단히 느리다. (약 8 분). 저장소에는 약 63000 개의 파일이 있으며 그 대부분은 git에서 무시되는 라이브러리입니다. 이게 정상인가? 나는 도달 할 수없는 객체들을 정리하고 가비지 수집을 수행하기 위해 git prune && git gc을 수행했다. 나도 git repack -Adf를했다. 그러나 이것은 물건을 심지어 더 나쁘게했다. 더 오래 걸립니다 (20 분 이상).git 상태가 너무 오래 걸린다

내가 뭘 잘못하고 있니? 이것은 비주얼 스튜디오 프로젝트이며, .gitignore 파일에 올바른 것을 포함하지 않는다고 가정합니다. Visual Studio 빌드에서 생성 된 파일과 버전을 지정해야하는 파일을 정확하게 찾을 수 있습니까?

.gitignore 파일에 문제가없는 경우 어떻게하면 git status을 더 빨리 만들 수 있습니까? 65000 개 파일 (약 10GB)이있는 프로젝트에서 정상적으로 작동합니까?

+1

일부 창 환경에서는 git이 느립니다. http://stackoverflow.com/questions/4485059/git-bash-is-extremely-slow-in-windows-7-x64?lq=1 및 http://stackoverflow.com/questions/2835775/에서 살펴 보셨습니까? msysgit-bash-is-horrendously-slow-in-windows-7? lq = 1? –

+0

'git status'가 완료되면 표시되는 것은 무엇입니까? –

+0

@ me_and 정상적인 "아무것도 쓰지 않는다"라는 메시지를 보여 주며, 너무 오래 걸린다. –

답변

5

해당 크기의 저장소의 경우 git status 및 관련 명령이 매우 느릴 수 있습니다. Git은 프로젝트가 별개로 분리되어있을 때 더 잘 작동합니다. Subversion은 여러 프로젝트가 포함 된 하나의 거대한 저장소를 사용하는 경향이 있으므로 Git-SVN을 사용할 때는 이런 종류의 문제가 드뭅니다. 이미, 솔리드 스테이트 디스크보다는 자기 디스크를 사용하여 업그레이드하지 않은 경우

  • :

    는 그럼에도 불구하고, 당신이 일을 단축하는 데 사용할 수있는 몇 가지 솔루션을 거기. 이 단일 변경은 비슷한 저장소에서 작업 할 때 Git의 속도에 엄청난 차이를 만들었습니다.

  • git help svn의 구성 섹션을 살펴보십시오. 전체 저장소가 아닌 Subversion 저장소 (예 : trunk/project-a, branches/*/project-a, tags/*/project-a 등)의 추적 하위 폴더를 사용하도록 Git-SVN을 설정하는 방법을 설명합니다. 리포지토리에 맞는 말이라면 훨씬 더 작은 체크 아웃과 훨씬 빠른 실행 git status을 가질 수 있습니다.

  • 희귀 체크 아웃 섹션은 git help read-tree입니다. Subversion의 스파 스 체크 아웃과 비슷한 스파이 작업 카피를 사용하도록 Git을 설정하는 방법에 대해서 이야기 할 것이다. 다시 말하지만, 이것은 작업 사본에 Git이 추적하는 파일이 적을 것이므로 모든 것을 검사하는 것이 다시 빠를 것이라는 것을 의미합니다.

  • 작업 복사본의 큰 부분에 "변경되지 않음"플래그를 설정하는 것을 고려하십시오. 이렇게하면 Git이 파일이 변경되었는지 확인하지 않아도됩니다. 이 일을 두 가지 방법이있다 :

    find <folder-name>... -type f -exec git update-index --assume-unchanged {} + 
    
  • 이 확약되지 않은 잃게됩니다주의 (전체 저장소에 플래그를 설정하려면 :

    1. , 다음과 같은 실행 뭔가를 특정 폴더에 대한 플래그를 설정하려면 변경) :

      git config core.ignorestat true 
      git reset --hard HEAD 
      

    01에서 --assume-unchanged 옵션에서보세요및 config.ignoreStat 섹션은 git help config에 대한 정보가 있습니다.이러한 사용

    당신이 git commit -a & C가 작동하지 않습니다 즉, 명시 적으로 git diffgit add 같은 명령에 경로를 지정해야합니다 베어 git diff 같은 명령을 의미합니다.

  • 운영 체제 및/또는 파일 시스템을 변경하십시오. Git 매뉴얼 페이지 (이전 글 머리 기호와 같은)에 따르면 Windows의 lstat은 CIFS 파일 시스템과 마찬가지로 느립니다. 필자는 이상형이 ext3 또는 ext4와 같은 것 같다고 생각한다.

관련 문제