프로젝트의 자식 리포지토리를 구성하는 방법은 무엇입니까?


9

Drupal의 컨텐츠 동기화 모듈을 작업 중입니다. 웹 사이트에 있으며 웹 서비스를 통해 컨텐츠를 노출하는 서버 모듈이 있습니다. 클라이언트 사이트도 있습니다.이 모듈은 다른 사이트에 있으며 정기적으로 컨텐츠를 가져오고 가져옵니다.

서버는 Drupal 6에서 생성됩니다. 클라이언트는 Drupal 7에서 생성됩니다. Druapl 7 버전의 서버가 필요합니다. 그리고 내년에 출시되면 클라이언트와 서버 모두에 대한 Drupal 8 버전이 필요합니다.

git 및 source control에 익숙하지 않아서 git 저장소를 설정하는 가장 좋은 방법이 무엇인지 궁금했습니다. 각 인스턴스에 대해 별도의 리포지토리가있는 경우 : 예 :

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

아니면 서버를위한 하나의 저장소와 클라이언트를위한 다른 저장소를 갖는 것이 각 Drupal 버전에 대한 브랜치를 생성하는 것이 더 합리적입니까?

현재 2 개의 저장소가 있습니다. 하나는 클라이언트 용이고 다른 하나는 서버 용입니다.

답변:


7

프로젝트가 실제로 크지 않다면, 서버와 클라이언트를위한 서브 디렉토리가있는 단일 저장소로 가서 각 버전에 대한 브랜치를 작성합니다. 동시에 여러 버전에 액세스하려는 경우 저장소의 사본을 여러 개 가질 수 있습니다.

여러 리포지토리를 유지 관리하면 변경 사항을 필요 이상으로 전송하기가 어렵습니다 (패치를 적용하는 것보다 쉽게 ​​리베이스 할 수 있음). (불가능한) 경우 여러 버전에 적용되는 변경 사항이 없지만 여전히 아무것도 잃지 않습니다 ...

또한 언제든지 여러 리포지토리로 전환 할 수 있습니다. 리포지토리를 복제하고 원하지 않는 분기를 제거하십시오. 다른 방향으로 나아가는 것이 더 어렵습니다.

서버와 클라이언트가 아무것도 공유하지 않거나 코드가 실제로 큰 경우에만 여러 번 repos를 사용합니다.


Drupal은 다른 버전을 브랜치로 저장하기 때문에 이것이 내가 갈 길입니다. +1도했지만 15 명의 담당자가 필요합니다!
littledynamo

4

나는 그러한 변형을보고 작업했습니다. 서버 및 클라이언트 용 하위 폴더가있는 하나의 폴더 또는 각각 하나의 저장소에있는 모든 것. 나는 프로젝트의 모든 주요 부분에 대해 단일 저장소를 선호합니다.

큰 버전 변경의 경우 새 저장소를 작성하기 만하면됩니다. 분명히 다른 가지가 없습니다. 브랜치는 새로운 기능 및 영구 배포 브랜치를 구현하는 데 강력하지만 항상 너무 많은 병렬 병렬 실행을 피합니다. 당신은 항상 그것들을 유지해야 할 것입니다 (마스터 브랜치가 변경되었을 때 리베이스를 수행하십시오). 기본 구조를 가능한 한 간단하게 유지하십시오. 여분의 repo를 갖는 것은 (내 겸손한 견해로는) 다른 주에서 지점을 저글링하는 것보다 덜 고통 스럽습니다. 특히 클라이언트와 서버가 많은 코드를 공유하지 않는 경우.

Drupal과 버전 간의 차이점이 얼마나 강력한 지 잘 모르겠습니다. 그래서 다른 저장소를 선호하는 요점은 Rails에 대한 나의 경험에 더 근거합니다. 버전 간에는 파일 이름 지정 방법이나 폴더 구조 (예 : 자산 파이프 라인)와 같은 점에서 큰 차이가있어 새 저장소를 만드는 것이 더 편합니다. Drupal (또는 다른 프레임 워크)은 차이가 적을 수 있으므로 기존 저장소 내에서 계속 진행하는 것이 좋습니다.


1
감사. Drupal Core 모듈이 별도의 버전을 분기로 저장한다는 사실을 알게 되었기 때문에 흥미 롭습니다. 나는 그 구조를 모방하는 것이 합리적이라고 생각합니다. +1하지만 15 명의 담당자가 필요합니다!
littledynamo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.