2013-06-05 4 views
2

그래서 힘내는 매우 새롭습니다. 나는 로컬에서 잠시 동안 사용해 왔지만 분산 된 팀 협업의 의도는 결코 그것을위한 것이 아닙니다.Git : Clone의 복제시 원격 지점 가용성

는 배경 : 최근 우리 회사의 외부 개발자는 자신과 자신의 repo에 커밋 시작하는 우리의 웹 사이트에 사소한 변경을 한 내 회사의 다른 직원을 추진하기 시작했다. 그들은 자식 흐름 워크 플로우를 사용합니다.

계획 프로세스 : 우리 회사는 프로세스에 꽤 큰이며, 그래서 우리는 "게이트 키퍼"만약에 당신의 종류 역할을 우리의 IT 부서에서 한 사람을 제어합니다. 그는 개발자 # 2의 복사본을 네트워크에 복제하여 사원 # 2와 게이트 키퍼 클론으로부터 복제했습니다. 직원 # 2와 나는 결코 개발자의 레포로 직접 가지 않을 것입니다. 게이트 키퍼의 복제본을 확인한 후 개발자 저장소에 대한 모든 추적 지점을 보유하고 있습니다. 내 복제품에는 추적 지점이 없습니다. 추적 지점을 얻으려면 우리가 필요로하는 모든 지점을 체크 아웃 한 다음 나와 나와 직원 2에게 가져 오기를 수행해야합니까? 그리고 우리 지점을 (게이트 키퍼) 지점으로 (개발자) 지점으로 데려 오는 데 문제가있을 수 있습니다.

Developer repo 
     | 
     | 
Company "Gate keeper" 
     /\ 
    / \ 
    / \ 
    me  employee #2 

그것은 내가이 일을 망치려고 오프 기능 지점을 만들 수있는 적절한 개발 지점이없는 경우처럼 보인다 :

다음은 계획 과정의 작은 ASCII 다이어그램입니다.

죄송합니다. 너무 오래되었습니다. 도움을 주셔서 감사합니다.

tl; dr 원본의 모든 원격 추적 지점을 사용하지 않고 클론 복제본에서 작업하고 어떻게 가져오고 잠재적 문제가 있습니까?

답변

0

너와 # 2은 리모컨으로 게이트 키퍼 repo를 가져 와서 가져옵니다. 당신이 할 때 게이트 키퍼의 지방 분지의 상태를 그들의 현재 각각의 커밋에서 얻을 것입니다.

그래서, 게이트 키퍼개발자 REPO에서 날짜 변경까지 얻을 수 git pull 관련 지점에 필요합니다. 그런 다음 게이트 키퍼에서 최신 변경 사항을 가져올 수 있습니다.

내게 불편한 것 같습니다. 게이트 키퍼에 따라 달라 지므로 정기적으로 당길 수 있습니다. 또한 게이트 키퍼은 그가 싫어하는 변화가 있다면 어떻게해야합니까? git revert 그것?

아마도 워크 플로의 더 나은 대안은 Integration-Manager Workflow입니다. 게이트 키퍼통합 관리자하고, # 2개발자 수 기여자 수 있습니다.

무엇이 가장 좋은지는 게이트 키퍼의 역할에 따라 다릅니다.그는 코드를 담당하고 있습니까, 아니면 개발자 담당합니까?

+0

개발자는 코드를 100 % 담당합니다. 사실 지금 당장은 로프를 배우는 동안 개발자는 자신이 선택한 git 호스팅 플랫폼에서 병합 요청을 사용하기를 원합니다. 게이트 키퍼는 일부 컨트롤을 제자리에 배치하기위한 것입니다. 게이트 키퍼는 공식적으로 코드에 거부권을 행사하지는 않을 것이며, 개발자에게 단일 소스를 제공 할 수 있습니다. – IamPATRICKc

0

저는 게이트 키퍼와 두 사람이 저장소에서 작업하는 유일한 개발자가 아니라면 일반적으로 나쁜 습관이라고 말합니다. Git의 강점 중 하나는 메인 브랜치 (git 플로우의 경우 브랜치 개발)의 최신 변경 사항을 병합하여 쉽게 유지할 수있는 로컬 기능 브랜치를 유지하는 것입니다.

개발 기간이 긴 기능 분기 (예 : 2 주)가 있다고 가정 해보십시오. 개발 브랜치가 다른 개발자에 의해 정기적으로 푸시되고 게이트 키퍼가 리포지토리를 자주 업데이트하지 않는 경우 병합을 시도 할 때 충돌로 많은 골칫거리를 겪게됩니다. 운이 좋다면 주류 저장소에 병합하려고 할 때 문지기가됩니다.

주 저장소는 어디에 호스팅됩니까? 예를 들어 Bitbucket 또는 Github에서 호스팅되는 경우 훨씬 나은 접근 방법은 저장소에 대한 읽기 액세스 권한을 포크 할 수 있도록 제공하는 것입니다. 그런 다음 저장소를 포크하고 자신의 복사본을 커밋 한 다음 주 저장소로 요청을 가져올 수 있습니다. 이렇게하면 게이트 키퍼와 다른 사람들이 코드를 주 저장소에 병합하기 전에 검토 할 수있는 동안 포크를 최신 상태 (및 로컬 작업 공간)로 유지할 수 있습니다.

셋업은이 다음

-------------------   ------------------------------- 
| Main repository |   | Your forked repository  | 
-------------------   | (Main repository as remote) | 
Gatekeeper can read/write  ------------------------------- 
You can read     You have read/write access 
           You can fetch/pull the latest changes from main 
           You can push your commits 

지금 당신은 쉽게 갈래 저장소에 최신 변경 사항을 당겨/가져 오기 및 시작할 수 있습니다 기능을 가지 같을 것이다. 주 저장소가 업데이트되면 변경 사항을 항상 가져 오거나 가져 와서 기능 분기에 병합 할 수 있습니다.

로컬 지사를 종료 했습니까? 전체 분기를 분기 된 저장소로 밀어 넣은 다음을 주 저장소에 넣고 검토하고 병합 또는 거부 할 수있는 요청을 수행하십시오. Bitbuckets documentation on pull requests

Githubs documentation on pull requests

    • 는 회사의 시간과 두통과 관련된 다른 많은 개발자를 저장합니다.

  • +0

    나는이 접근법을 좋아한다. 불행하게도 나는 Codebase가 붕괴하고 있다고 생각하지 않는다. – IamPATRICKc

    0

    계약자의 레포를 추정하는 것은 비슷하게 (베어와 DMZ가 될 것입니다.), 다른 쪽을 밀어 넣을 때마다 후 수신 후크가있는 것으로 생각합니다. 푸시 갈등이 회사 간 경계에서 발견되지 않게하려면 dmz'd repos의 각 지점을 한 회사 또는 다른 회사에서만 업데이트 할 수있게하십시오.