2013-02-21 2 views
0

최근에 git-svn을 사용하여 SVN에서 GIT로 마이그레이션했습니다.git 특정 서브 폴더를 브랜치로 표시하는 방법

체크 아웃 된 코드의 실제 크기는 ~ 24GB입니다. GIT에서는 현재 분기가 origin/master 인 것으로 나타났습니다. 따라서 각 개발자가 마스터를 복제하면 매회 24GB를 가져와야하므로 실제적인 문제가됩니다.

따라서 기존 위치 중 일부를 전체 저장소로 표시 할 수 있도록 분기로 표시해야합니다.

/Docs/ 
/project-maintainance/ 
/main-project/ 
      /module1 
        /branch1 
        /branch2 
      /module2 
        /branch1 
        /branch2 
        /branch3 

지금,이 작업을 수행하기 위해, 나는 지점과 같은 일부 특정 폴더를 표시 할 대신에 새로운 지점을 만드는 : 같은

프로젝트 REPO 구조이다. 너무 많은 웹 페이지를 탐색했지만 초보자 인만큼 혼란이 증가했습니다.

어떻게 최상위 폴더 대신 하위 폴더에서 분기를 만들 수 있습니까?

편집 : 지금 내 목표는 checkout multiple subtrees, push and pull changes.

답변

0

할 수 있도록 그것은 distributed version control system (DVCS)입니다 불행하게도, 자식이 이런 식으로 작동하지 않는 것입니다. 즉, 코드의 일부만이 아니라 전체 복사본이 있다는 뜻입니다.

그러나 shallow clone을 수행 할 수 있습니다. 예를 들어 :

git clone <repo> --depth 1 

이 방법은 여러 가지주의 사항과 함께 제공 - 당신은 충분히 더 논의 here을 찾을 수 있습니다.

궁극적으로 24GB는 git repo에서 매우 큽니다. 사실 이전에는 그러한 대규모 저장소에 대해 들어 본 적이 없습니다. filter branch 명령을 사용하여 크기를 대폭 줄이려면 조사하는 것이 좋습니다.

내가 쓴 가지고 Ruby gem - (당신의 working copy 더 이상하고) 당신의 역사에서 대형 파일로 자식 저장소에 대한 기본 통계를 제공 제거 filter branch를 사용하여 적합한 후보가 될 수있다 - 개발 초기 단계에 아직도있다 .

또 다른 옵션은 단일 저장소를 여러 저장소로 분할하는 것입니다. 코드가 어떻게 어울리는 지 모르겠으므로 강력하게 추천 할 수는 없지만 a great discussion here이 있습니다.

+0

예 매우 큰 repo입니다. '얕은 복제 '는 내 기록이나 파일 깊이를 무시할 수 없기 때문에 요구 사항에 맞지 않습니다. 프로젝트를 다른 리포지토리로 분할하려고 생각했지만 엄청난 노력과 변화가 필요합니다. 지금 당장 제 목표는'여러 하위 트리를 체크 아웃하고 변경 사항을 밀고 당길 수 있어야합니다. '입니다. – rohit

관련 문제