2012-12-26 3 views
2

개인 프로젝트의 일환으로 전 서브 버전 대신 자식을 사용하기 시작했습니다. 아마도 새로운 것을 배울 것입니다.하나의 git 저장소에 여러 관련 프로젝트를 유지하는 가장 좋은 방법은 무엇입니까?

리포지토리 설정은 매우 쉽습니다. git 파일을 제공하도록 웹 서버를 구성하는 것이 매력적입니다. 커밋, 복제, 문제 없습니다.

그러나 저장소에 프로젝트 설정과 관련된 몇 가지 문제가 있습니다. 현재는 다음과 같습니다

project.git 
\- mobileapp 
\- artwork 
\- backend 
\- website 

websitemobileapp은 모든 작품 일단 backend와 통신하기로되어있다.

내 서버에 backend을 배포하려는 경우 현재 전체 저장소를 체크 아웃하고 내용을 backend에서 내 웹 루트 디렉토리로 복사해야합니다.

project.git/backend의 내용을 체크 아웃 할 방법이없는 것처럼 보이기 때문에 네 개의 하위 프로젝트를 네 개의 저장소로 분리하여 4 개의 저장소를 유지 관리하는 오버 헤드가 추가되는 것을 고려하고 있습니다.

내 문제를 해결하는 더 쉬운 방법이 있습니까?

+2

서브 모듈이 유용 할 수 있습니다. –

+0

서버의 일부 위치에 복제 한 다음 수신 한 후 백엔드를 프로덕션 영역에 복사하고 포스트 프로세스를 통해 필요한 서버 프로세스를 다시 시작하는 포스트 후크를 사용하면 어떨까요? – jdi

답변

1

사용 submodule :

$ git submodule -h 

일예

$ git submodule add [email protected]:<username>/backend.git backend 

그런 다음 backend을 별도의 프로젝트로 처리 할 수도 있습니다.

2

부분적인 Git 저장소를 체크 아웃하는 특별한 방법이 없다는 것이 맞습니다. (1.7.0부터 Git은 sparse checkout을 지원하지만 사용자의 필요를 충족시키지 못할 수도 있습니다.)

일반적으로 각 논리적으로 분리 된 모듈을 별도의 저장소에 저장하는 것이 좋습니다. 이러한 모듈 간의 관계를 관리하는 것은 다소 어렵습니다.

하나의 접근법은 Git submodules을 사용하는 것입니다. Git이 적절한 버전의 하위 저장소를 체크 아웃하는 방법을 가르치는 부모 Git 저장소 내부에 메타 데이터를 추가합니다. 그런 다음 해당 메타 데이터와 충돌하는 개별 커밋을 만들어 관계를 관리합니다.

다른 방법은 Android의 repo 공구와 같은 외부 도구를 사용하는 것입니다. Repo는 다중 하위 저장소와 관련하여 자체 상태를 유지하지만 개정판에 중점을 둔 하위 모듈과 달리 repo은 분기 집중 형입니다.

두 가지 접근법은 모두 실행 가능하며 모듈 간의 관계에 대해 생각하는 방법에 철학적 인 차이가 있습니다. 물론 이것은 반드시 문제를 해결하는 "더 간단한"방법은 아닙니다.