2013-05-23 3 views
0

우리 프로젝트 파이프 라인에 대한 모든 스크립트와 플러그인을 포함하는 폴더의 변경 사항을 추적하려면 Git을 사용합니다. 여태까지는 그런대로 잘됐다. GitHub에서 해당 파일의 하위 집합을 공유하고 싶습니다. 전체 저장소가 상용 플러그인과 공개적으로 공유 할 수없는 다른 코드를 포함하기 때문에 하위 집합입니다.분할 Git 저장소 또는 동일한 폴더의 두 저장소를 유지

스크립트와 플러그인은 다양한 폴더에 혼합되어 있습니다. 따라서이 폴더를 공유하는 것만 큼 간단하지는 않습니다.

어떻게해야합니까? 이 모든 것이 가능합니까?

EDIT :

기본적으로, 현재 사용이 구조이다

또한
programmA 
    |-plugins (both commercial and public) 
    |-scripts (both commercial and public) 
programmB 
    |-plugins (both commercial and public) 
    |-scripts (both commercial and public) 

개별 하위 프로그램은이 프로그램 지침에 따라 구성된다. 그것은 것, 즉 아직도 날이 모듈을 사용하는 것을 허용하지 것이다, 그러나

programmA 
    |-plugins commercial 
    |-scripts commercial 
    |-plugins public 
    |-scripts public 
programmB 
    |-plugins commercial 
    |-scripts commercial 
    |-plugins public 
    |-scripts public 

: 나는 이런 식으로 뭔가를 만들 수 대청소의 비트와 함께 생각? 아니면 프로그램과 하위 폴더 당 하나의 모듈을 사용해야합니까?

답변

0

처음부터 이런 종류의 계획을 세울 때 GitHub & '개인'지점으로 푸시하기위한 '공개'지점을 유지하여 내부 개발을 위해 공개 지점에서 병합을 가져올 수 있습니다.

또는 '상업용'자료의 하위 모듈로 '공개'자료를 설정할 수 있습니다.

여기에있는 문제는 그 반대의 작업을 원하는 개인 사단에서 파생 된 공개 분기를 만드는 것입니다. 나는 충분한 벚꽃 따기로 당신이 그런 가지를 만들 수있을 것이라고 생각하지만, 나는 그 노력을 부러워하지 않는다.

테스트되지 않음 : Oleksandr의 방법을 사용하여 새 저장소에 'public'분기의 첫 번째 커밋을 만든 다음 비공개로 fetch을 만듭니다. 조심스럽게 병합하면 작은 역사가있는 '공개'지점이있는 단일 저장소가 생성 될 수 있습니다. & 풍부한 역사가있는 '상업적'지점 모음입니다.


업데이트 : 하위 모듈에는 디렉토리 경계가 필요합니다. 따라서 이러한 프로그램을 사용하면 프로그램 A를 프로그램 B에서 각각 큰 프로젝트의 하위 모듈로 파티션 할 수 있습니다. 공개 정보가 비공개 정보의 하위 모듈 (하위 디렉토리)과 같은 디렉토리를 정렬 할 수 있다면이 방법이 가장 적합 할 것입니다.

그렇지 않으면 공개/비공개 분기 방법을 시도해 볼 수 있습니다.

공개 지사는 공개 코드 또는 그 부모 중 하나만 공개됩니다. 공용 저장소는 공개 저장소에 밀어 넣는 유일한 저장소입니다.

개인 지점에는 공개 & 개인 정보가 모두 포함됩니다. Public에서 수행 된 작업은 사설 지사로 통합 될 수 있지만 다른 방법으로는 사용할 수 없습니다. 사설 브랜치는 사설 리포지토리에만 푸시되며, 사설 브랜치와 공용 브랜치에서 병합 된 데이터가 모두 표시됩니다.

개인 &이 공개로 시작될 수 있다고 생각하는 경우 새 개인 기능 지점은 공개 작업에만 기반한 다음 개인 분기로 병합해야합니다. 이렇게하면 Private 브랜치에 병합 할 때 부모 커밋 중 개인 정보가 포함되지 않습니다. 이러한 이유 때문에 Public 브랜치를 기반으로 각 사설 기능을 기반으로 각 사설 기능을 기반으로 할 수 있습니다. 따라서 공개로 설정하면 저장소에서 훨씬 적은 작업을 수행하여 해당 분기의 코드를 공개로 설정해야합니다. .

+0

나는이 시점에서 역사에 대해별로 걱정하지 않는다. 모두 꽤 안정적입니다. 내가 처음부터 시작할 수 있다면, 내가 어떻게 나아갈 것을 제안하겠습니까? 상업용 비트 인 repo를 만든 다음 공개 모듈을 만들고 공개 자료를 모두 다시 복사합니까? (또한, 나는 아직 이것을 수행하는 방법에 대해 아무런 단서가 없다. Git에 대해서는 아직 익숙하지 않다.) – AlexK

+0

잠깐 ... 서브 모듈이 자체 폴더에 있는지, 맞습니까? 그렇다면이 접근법은 작동하지 않을 것입니다. 공용 및 상업용 자료가 같은 폴더에 있고 이러한 폴더가 여러 개 있기 때문입니다. – AlexK

+0

내 폴더 구조가 어떻게 배치되어 있고 왜 모듈에 문제가 있는지를 보여주는 주요 질문을 변경했습니다. – AlexK

2

는 다음과 같은 작업을 수행 할 수 있습니다

  1. 모든 subrepositories에 .git 폴더를 삭제하고 itsetlf을 REPO 저장소
  2. 의 로컬 복사본을 만듭니다.
  3. 복사본 저장소에 git init을 수행하십시오.
  4. .gitignore 파일을 복사 폴더에 추가하고 git에서 생략 할 파일을 지정하십시오. 복사의 repo에서
  5. git add . 모든 파일이
  6. 밀어 복사 저장소는

당신은 기본 자식이 here을 무시 찾아 귀하의 요구 사항에 따라 수정할 수 있습니다 GitHub의합니다.

기존 repo에 .gitignore 파일을 추가하고 변경 사항을 커밋 할 수도 있지만 이전 커밋에서 스크립트가 실행되지 않을지는 잘 모르겠습니다.

+0

그렇다면 두 번째로 완전히 독립적 인 힘내 저장소가 남을 것입니다. 맞습니까? 두 개의 완전히 관련없는 폴더. 따라서 메인 레포에서 변경 사항을 적용 할 때마다 손으로 GitHub 레포로 복사해야합니다. 그건 재미 없어. – AlexK

관련 문제