복붙노트

[RUBY-ON-RAILS] 어떻게 동기에서 자식의 repo의 공공 및 민간 버전을 유지하려면?

RUBY-ON-RAILS

어떻게 동기에서 자식의 repo의 공공 및 민간 버전을 유지하려면?

나는 오픈 소스는 Github에서 (아마도 MIT 라이센스)에 응용 프로그램을 레일 공개하고 있습니다. 나는 또한 우리가 유료 서비스의 일부로 사용하는 프로젝트의 사설 / 포크를 유지하고 싶다.

이 시나리오에서 REPO (들)을 구성하는 가장 좋은 방법은 무엇입니까? 나는 모두에 가야 업데이트가 때, 어떻게 동기화 프로젝트를 유지할 수 있습니다?

해결법

  1. ==============================

    1.가장 간단한 해결 방법은 '개인'저장소의 사설, 단순히 공공 저장소에 밀어되지 않은 즉 지점을 가지고하는 것입니다.

    가장 간단한 해결 방법은 '개인'저장소의 사설, 단순히 공공 저장소에 밀어되지 않은 즉 지점을 가지고하는 것입니다.

    이를 위해 당신은 아마에 필요하거나 당신이 설정에서 공개 저장소에 밀어 원하는 모든 지점을 지정합니다 (대신 미러링 globbing을 사용하여 refspec + 심판 / * / * 심판) 망할 놈의 행동에 조심스럽게 게시 할 지점을 밀어 의존, 또는 "매칭"현재의 디폴트 값을 "push.default"로 설정 정합 지점 (리모트 측에 존재하는 것들)를 밀어.

    이 기억 ( "심판 / 헤드 / <민간 지점> 자식 푸시 <리모컨>"실수로 당신이 당신의 사설을 누르면 사용합니다 (이 금지하도록 구성되지 않은 경우), 당신은 원격 저장소에서 삭제할 수 있습니다 빈 밀어 리모트 브랜치에 대한 값). 당신은 원격 측면에 후크를 사용하여 사설의 밀어 사고를 방지 할 수 있습니다, 참조 예를 들어, 있는 contrib / 예에서 갱신 편집증 예 후크.

    (!) 참고 : Junio ​​C 하마노, 자식 테이너, 공공 Git 저장소 가지의 지정된 세트에 푸시 'MAINT', '마스터', '다음', '폴리 우레탄'(제안 업데이트)와 'HTML', '사람', ' 할 것'; 그는 단명 자주 변경 기능 지점을 게시하지 않습니다.

        working repository  ---->  private repository (bare)  ---->  public repository  
        \------ private -------/     \------- protected ------------/     \------- public -----/
    

    "근무 저장소는"당신은 당신이 변화하고 해결 충돌을 당겨 곳에서 커밋을 만드는 것이 작업 영역과 저장소입니다; 당신이 당신의 일을 저장소. 하자는 다음 가지를 포함 말 : 세계에 게시 할 수 있습니다 변경 '대중', '개인'당신이 원하는 것을 'ticket- 같은뿐만 아니라 사람들의 선택 부분 집합을 다른 사람 또는 공유와 공유, 그리고 아마도 몇 가지 기능을 가지에 심지어 선택한 그룹에보고 할 준비가되지 않은 234 '또는'추가 frobnicator '. 이 게시되지로이 저장소, 비 베어입니다.

    그것은 '개인'저장소에 밀어 다음과 같은 구성 같은 것을 할 것입니다. 참고 "일치하는 지점"행동이 명시 적으로 여기에서 설정되고, 자식 풀 맨 페이지를 참조하십시오 것을 :

    [remote "private"]
            url = user@example.com:/srv/private/git/repo.git
            push = +:
    

    "개인 저장소"는 SSH를 통해서만 인출 할 수 있습니다 예를 들어 선택된 사람들에게 가능한 공공 베어 저장소입니다. 그것은, 즉 '대중'과 '개인'가지 준비가 된 경우에만 지점이있다; "개인"리포지토리 생성, 또는 "작동"저장소에서 명시 적으로 ( "자식 푸쉬 전용 <분기>") 가압 될 때 그 두 가지가 존재 하였다. "작업"푸시 저장소 (전송) 만 정합 지점, 즉 전용 '공개'와 '비공개'분기를 누른다.

    "개인 저장소는"후 업데이트가하거나가 그것 (물론, 그것은 무조건 밀어 수)에 푸시 경우 푸시 '공공'지사는 "공개 저장소"를 (아래 참조) 훅 세트를 포스트-받을 수 있습니다.

    "공공 저장소는"예를 들어이 GitHub의에서 호스팅되는, 모든 사람에게 공개 베어 저장소를 사용할 수 및 / 또는 Gitorious, 및 / 또는 repo.or.cz, 또는 아마도 그것은 자식을 통해 제공됩니다 : 자식 - 데몬을 사용하여 // 프로토콜입니다. 그것은 단지 '공개'지점을 포함, 그것은을 생성 / '개인'지점 푸시을 업데이 트를 사용하거나이 예에서 ((전용 '공개'분기가 허용됩니다 여기에) 가지의 whilelist 받아들이 중 하나를 미리 수신하거나 지점의 블랙리스트 거부 ) 거부 될 것입니다. "개인"저장소에 밀어 때 자동으로 업데이트됩니다.

    이 설정은 지나치게 당신의 필요를 위해 복잡 할 수있다; "개인"저장소는 귀하의 경우 필요가 없습니다 수 있습니다. 이러한 경우에는 다음과 같이 보일 것이다 "공개 저장소"에 직접 밀어은 "저장소 작업"의 구성 :

    [repository "public"]
            url = ssh://example.com/srv/git/repo.git
            push = refs/heads/public:refs/heads/public
    

    나는이 예제 도움이 될 희망; 그러나 문서를 읽고 맹목적으로 그것을 사용하지 마십시오.

  2. ==============================

    2.은 "유료 서비스의 일부"에 대한 코드가 나타내는 코드보다 ( "다른 디렉토리에"즉) 별도의 공개 저장소에 밀려 "오픈 소스 응용 프로그램을 레일"경우에, 당신은 할 수 :

    은 "유료 서비스의 일부"에 대한 코드가 나타내는 코드보다 ( "다른 디렉토리에"즉) 별도의 공개 저장소에 밀려 "오픈 소스 응용 프로그램을 레일"경우에, 당신은 할 수 :

    그런 식으로, 당신은 모든 시스템 (공개 레일 응용 프로그램 + 개인 지불 시스템)와 함께 작업 만 GitHub의에 공공 부분을 누르면, 당신은 백업 시스템에서 (다른 개인 저장소에 모든 시스템 (민간 + 공공)를 밀어 수 있습니다 예를 들어).

    전용 코드가 공개 한 혼합되어있는 경우 ... 다음 Talljoe의 대답이나 야쿱 Narębski의 답변을 참조하십시오.

  3. from https://stackoverflow.com/questions/999064/how-to-keep-public-and-private-versions-of-a-git-repo-in-sync by cc-by-sa and MIT license