2012-03-15 4 views
2

우리는 새로운 프로젝트에 사용할 수있는 기본 설정을위한 저장소를 만들었습니다. 이 기본 설정은 '진행중인 작업'이므로이 작업에 대한 개발이 진행 중입니다. 새 프로젝트가있을 때 기본 설정을 사용하고 싶습니다. 새로운 프로젝트는 기본 설정 안에있는 모듈입니다.힘내 : 다중 저장소 결합

기본 설정이 개발 중이므로 다른 저장소로 업데이트를 푸시하고 싶습니다. 어떻게 우리는 Git에서 이것을 할 수 있습니까?

나는 Gitslave에서 무언가를 읽었습니다. 이거 좋은가요? 당신이 가진 환매 특약의 (업데이트) 내용을 병합 할
당신은 다른 환매 특약의 내용과 하위 디렉토리를하지 않으 : http://gitslave.sourceforge.net/

답변

1

나는 서브 모듈 또는 노예가 적절한 위치 생각하지 않는다 기본 프로젝트 구조.

그것은 각 프로젝트의 repos 원격 (git remote add basic /path/to/basic/repo)로 그 'basic'환매 특약을 추가하면 쉽게, 그리고 말했다 지점을 병합 한 후 (예 : '기본-BR'의 이름을 딴) 로컬 지점에서 그 basic REPO를 당긴 것 현재 지사에서.

그런 식으로 그들은 basic 레포를 정기적으로 가져 오거나 가져 와서 필요할 경우 basic-br 분기를 병합 할 수 있습니다.

2

Gitslave는 여러 repos에서 동일한 명령을 실행하려는 경우에 사용됩니다. 이 경우의 유일한 적용 가능성은 수퍼 프로젝트 (잠재적으로 기본 저장소, 아마도 다른 저장소)를 생성하고 모든 프로젝트 저장소를 하위 저장소로 사용한 경우입니다. 그런 다음 하나의 명령으로 기본 저장소에있는 모든 슬레이브 저장소에 원격을 추가하고 모든 슬레이브 저장소에서 기본 분기를 체크 한 다음 변경 사항을 각 슬레이브 저장소로 가져온 다음 마지막으로 기본 저장소를 병합/리베이스합니다 프로젝트 브랜치 (마스터 또는 기타)에 브랜치를 배치하십시오. 충돌이 해결되면 다음 각 프로젝트 repo 밖으로 밀어 수 있습니다.

이것은 변경 사항을 다른 저장소로 푸시하는 것과 반대이지만, 병합 프로세스도 자동화 할 수 있으므로 훨씬 유용합니다.

원래의 욕구에 더 일치하는 또 다른 접근법은 동일한 명령에서 기본 저장소를 여러 저장소에 밀어 넣는 "전체"대상을 추가하는 것입니다. http://jeetworks.org/node/22

그러나 모든 상황에서 정상적인 분기 전략을 사용하려면 "기본 분기"개념이 있어야합니다. 특히, 프로젝트 브랜치는 기본 브랜치에서 분기해야하므로 기본 브랜치에 대한 업데이트를 통합하거나 리베이스 할 수 있습니다.

또 다른 옵션은 모든 것을 제어하고 프로젝트마다 하나의 브랜치를 작성하는 것입니다 . 변경 사항을 기본 분기에 다른 모든 분기로 병합하려면 자동화를 작성해야합니다. 요구 사항, 보안 또는 프로젝트가 얼마나 멀리 떨어져 있는지 또는 프로젝트 별 괴롭힘이 얼마나 많은지에 따라 이는 의미가있을 수도 있고 그렇지 않을 수도 있습니다.