2013-02-28 2 views
1

우리는 엔터프라이즈 응용 프로그램을 가지고 있으며 scm에는 git을 사용합니다. 또한이 프로젝트의 기초는 공개 소스 도구 인 공개 git repo입니다.두 개의 gpos repos 공존 - 불가능하거나, 어떻게?

기업 고객 인 경우 설치 프로세스는 a) 오픈 소스 도구를 설치하고 b) 동일한 소스 디렉토리 도구의 위에 엔터프라이즈 기능을 설치합니다.

배포의 경우 이는 정상입니다. 개발을 위해서는 악몽입니다.

두 개의 복잡한 겹치는 프로젝트를 동일한 구조에 포함시킬 수있는 방법이 있습니까? 나는 어떻게 볼 수는 없지만 내가 물을 것이라고 생각했다.

는 지금은 그것을 이런 식으로 설정 한 :

  • 오픈 소스 도구 디렉토리 하나를
  • 다른
  • 스크립트에서
  • 기업 코드가 공개로 (심볼릭 링크를 통해) "을 설치합니다"기업 source dir 그래서 dev/run/test를 할 수 있습니다.

오픈 소스 저장소 변경을 적용하기 전에 문제가 발생했습니다. 변경 사항을 명확하게 볼 수 있도록 엔터프라이즈를 "제거"해야합니다. (또는 .gitignore를 수백 개의 항목으로 관리하십시오.) 아프다.

너무 큰 프로젝트 ... 25 개 이상의 모듈과 100 개가 넘는 파일이 엔터프라이즈 에디션으로 복사됩니다. 많은 패키지에는 엔터프라이즈에 추가 모듈이 있습니다.

어떤 아이디어라도 될 수있을만큼 좋았습니까?

+0

패키지 관리자를 사용하십시오. –

+3

자식 모듈에서 서브 모듈을 보았습니까? –

답변

3

힘내 서브 모듈을 사용하면 서로 다른 자식 프로젝트를 유지하면서 다른 프로젝트를 사용할 수 있습니다. 오픈 소스 도구의 특정 버전을 가리키는 엔터프라이즈 버전을 유지하면서 원하는대로 오픈 소스 도구를 수정할 수 있기 때문에 편리 할 수 ​​있습니다. 엔터프라이즈를 새로운 커밋으로 업그레이드하려는 경우에도 간단합니다.

여기에 좋은 resource입니다.

+0

저는 이것이 speficif 문제를 해결하지는 못하지만 좀 더 일반적인 문제에 대한 최선의 접근 방법이기 때문에 이것을 답으로 표시하고 있습니다. 이 두 앱은 하나로 설계되었습니다. 우리는 패키지를 삭제하여 오픈 소스 버전을 만들지 만 별도의 디렉토리가 아닙니다. 파일이 다른 동일한 디렉토리 구조입니다. 나는 전체 앱을 다른 뿌리에있는 두 개의 전통적인 저장소에 리팩터링하고 lib 경로와 환경 변수를 사용하여 서로를 인식하도록해야 할 것입니다. – hikaru

0

당신이 할 수있는 또 다른 일은 git 프로젝트에 오픈 소스 프로젝트를 sepparate 브랜치로 추가하는 것입니다.

오픈 소스 프로젝트의 오픈 소스 git 리포지토리는 git 프로젝트의 자체 노드를 브랜치 세트로 표시합니다. 그런 다음에 병합하여 프로젝트에 결합 할 수 있습니다

자식이 분산 버전 시스템이기 때문에,이 할 오히려 간단하다.

#Add the open source repo as a remote 
git remote add -f open_source_git <url to open source git repo> 
#Create a local branch to track the remote branch 
git branch open_source_master open_source:master 
# Combine the two projects 
git merge open_source_master 

open_source_master 지점이 너무 쉽게 업데이트 할 수 있습니다 및 자신의 저장소를 사용하여 오픈 소스 저장소를 추적하십시오.

관련 문제