2011-11-12 4 views
4

내가 참여중인 연구 그룹은 현재 자신의 모든 코드를 개인 SVN 저장소에 호스팅합니다. 우리는 코드를 열고 대부분을 Github으로 옮기고 싶습니다. 문제는 코드의 일부가 민감하고 개방되어서는 안되지만 버전 제어하에 있기를 원합니다. 현재 Github의 공개 코드와 비공개 SVN 저장소의 비공개 코드가 있습니다. 단일 Git 저장소에서이 작업을 수행하는 좋은 방법이 있습니까?하나의 Git 저장소에있는 공용 및 개인 코드

답변

5

단일 자식 저장소가있는 경우 당신이 할 수있는 일은 git submodules을 사용하는 것인데, 저장소를 "결합"할 수 있습니다. 공개 코드를 github에 보관하고 공개 코드를 하위 모듈로 참조하는 개인 코드 용 git 저장소를 만듭니다. 공개 서브 모듈 내에서 변경 한 내용은 github에 밀어 넣을 수 있으며 github의 변경 사항은 다시 되돌릴 수 있지만 서브 모듈 외부의 변경 사항은 공용 커뮤니티에 노출되지 않습니다. 코드 트리가 단일 루트로 병합되지만 개별 모듈간에 독립적으로 커밋, 푸시 및 푸시를 관리해야하므로 많은 사람들이 번거롭고 문제가 많습니다. 따라서 널리 배포하기 전에 워크 플로에 대한 실험을해야합니다.

0

아니요.

소스 코드를 암호화/암호 해독하기 위해 git 후크를 쓰지 않으려면 두 repos와 함께 살아야합니다. 누군가가 git repo를 복제 할 때 문자 그대로 복제본을 만들므로 암호화하지 않고도 그 일부를 비공개로 만들 수는 없습니다.

0

망할 놈의 서브 모듈은 여기에 이동 : http://git-scm.com/book/en/Git-Tools-Submodules

아이디어는 서브 모듈 개인 자식 저장소 안에 포함 된 공공 자식 저장소입니다. 디렉토리 구조의 내부에 임베디드 저장소 파일이있는 사적인 git 저장소의 장점을 이용하여 별도로 관리 할 수 ​​있습니다. 예를 들어

: 또 다른 옵션은 자식 - 토굴 https://www.agwa.name/projects/git-crypt/

0

네 사용

/private-repository 
    /some (private) directory 
    /public-repository 
     /some (public) directory 
    /some other (private) directory 

는 자식 서브 모듈뿐만 아니라 우리의 문제를 해결하기 위해 보인다. 우리는 개인 저장소의 동일한 지점에서 오픈 소스 CMS & 프리미엄 확장 (유료)을 개발하는 데 사용했습니다. 이제 핵심 개발을 공공 repo를 github으로 전환하고 개발을 분리하기로 결정했습니다.

다음은 어떻게 진행됩니까?

  1. 두 개의 분기로 공용 저장소를 만듭니다. 마스터는 출시를 위해 간다. 실제 개발을 위해 개발을 진행한다.
  2. 우리는 우리가 우리는 우리가 &가 서브 모듈로 모든 프리미엄 확장을 추가 우리의 개발에 갈 핵심 파일과 개인 저장소가
  3. 이 각 확장을위한 새로운 저장소를 만들었습니다. 물론 개인적인 것입니다. 지점 이름 - dev.

변경 사항을 병합하기 위해 지점 개발자로부터 체리 피커를 선택하여 개발할 수 있습니다. 이 경우 우리는 공개 저장소에 대한 핵심 코어 관련 히스토리를 가지고 있으며 단지 하나의 저장소를 복제 한 다음 재귀 적으로 하위 모듈을 업데이트하는 것이 매우 쉽습니다. 이 동기화를 위해 조금 더 시간이 걸리므로, 그만한 가치가 있습니다.

건배

관련 문제