Github 조직 리포지토리, 이슈, 여러 개발자 및 포킹-최상의 워크 플로 사례


14

이상한 제목, 예, 그러나 나는 생각할만한 약간의 근거가 있습니다.

개인 저장소가있는 github에 조직 계정이 있습니다. 우리는 github의의 기본 문제 / 풀 요청 기능 (풀 요청이 기본적으로 있습니다 사용하려는 정확히 우리가 코드 리뷰 및 기능 토론으로까지 원하는). 기존 문제를 풀 요청으로 변환하고 현재 지점을 자동으로 연결할 수있는 멋진 기능을 갖춘 defunkt 의 툴 허브 를 발견 했습니다.

조직의 각 개발자가 조직의 저장소를 포크하여 기능 작업 / 버그 수정 등을 수행하는 것이 가장 좋은 방법인지 궁금합니다. 이것은 꽤 견고한 워크 플로우처럼 보이지만 (기본적으로 github의 모든 오픈 소스 프로젝트가하는 것과 같습니다) 조직의 저장소 인 ONE 소스에서 문제를 추적하고 요청을 가져올 수 있기를 원합니다.

그래서 몇 가지 질문이 있습니다.

  1. 이 경우 개발자 당 포크 방식이 적절합니까? 약간 과잉 일 수있는 것 같습니다. 직접 푸시 액세스 권한이없고 모든 코드를 검토해야하는 개발자를 소개하지 않는 한 모든 개발자에게 포크가 필요한지 확실하지 않습니다. 어떤 경우에, 우리는 그러한 개발자들에게만 그런 정책을 세우기를 원할 것입니다. 그래서 어느 것이 더 낫습니까? 단일 저장소에있는 모든 개발자 또는 모두를위한 포크?
  2. 누구든지 허브 도구, 특히 풀 요청 기능에 대해 경험이 있습니까? 개발자 당 분기 별 (또는 권한이 적은 개발자)을 수행하는 경우 허브의 풀 요청 기능이 업스트림 마스터 리포지토리 (조직의 리포지토리)의 풀 요청에서 작동합니까 아니면 다른 동작이 있습니까?

편집
문제, 포크 및 풀 요청으로 몇 가지 테스트를 수행하여 발견했습니다. 조직의 리포지토리에 문제를 생성 한 경우 조직에서 자신의 github 계정으로 리포지토리를 포크하고 변경을 수행하고 포크의 마스터 브랜치로 병합하십시오. 실행하려고 hub -i <issue #>하면 오류가 발생 User is not authorized to modify the issue합니다. 따라서 작업 흐름이 작동하지 않는 것 같습니다.

답변:


6

이 경우 개발자 당 포크 방식이 적절합니까? 약간 과잉 일 수있는 것 같습니다. 직접 푸시 액세스 권한이없고 모든 코드를 검토해야하는 개발자를 소개하지 않는 한 모든 개발자에게 포크가 필요한지 확실하지 않습니다. 어떤 경우에, 우리는 그러한 개발자들에게만 그런 정책을 세우기를 원할 것입니다. 그래서 어느 것이 더 낫습니까? 단일 저장소에있는 모든 개발자 또는 모두를위한 포크?

팀 규모에 따라 다릅니다. 예전에는 단일 리포지토리를 보유한 소규모 팀에서 근무했으며 기능은 해당 리포지토리 내에 자체 지점을 가지고있었습니다. 그것은 우리에게 잘 작동했습니다.

그러나 저는 이제 정기적으로 수십 명의 사람들이 중앙 저장소에 액세스 할 수있는 더 큰 오픈 소스 프로젝트에 기여합니다. 우리는 여전히 개인 리포지토리의 모든 주요 개발을 수행하고 기능에 대한 PR을 제출하여 버그 수정을 직접 푸시 할 수는 있지만 코드를 검토 할 수 있습니다. 주 리포지토리에는 마스터 및 릴리스 분기 만 포함되어있어 혼란을 방지합니다. 기능 분기는 개인 저장소에 있으므로 다른 사용자가 여전히 볼 수 있습니다 (초기 PR을 작성하면 기능을 작업중인 팀의 다른 사용자에게 경고합니다). 소수 이상의 개발자가있는 모든 프로젝트에이 워크 플로우를 권장 할 수 있습니다. 유일한 단점은 여러 리모컨으로 작업해야한다는 것입니다.


2

개발자 당 분기 별 접근 방식은 코드 검토 및 코드 품질을 중요하게 생각할 때 매우 좋은 접근 방식입니다. 풀 요청을 사용하는 것에 대한 좋은 점은 책임을 관리자에서 개발자로 옮기는 것입니다.

개발자는 코드를 기본 지점으로 가져 와서 포함을 요청하려고합니다.

이것은 사람들이 커밋 한 이전 모델과는 매우 다른 맥락이며, 나중에 검토자가 그들에게 "오, 몇 주 전에 한 일이 그렇게 좋지 않았다면 지금 고쳐야합니다."라고 말해야했습니다.

우리는이 모델을 회사에서 사용합니다. 풀 요청은 코드 요청을 실행 가능하게 만들었고, 다른 사람들의 코드에 대한 토론을 장려하며, 새로운 툴을 처음 사용한 개발자들조차도 일반적으로 코드 품질에 도움을주었습니다. 또한 검토자가 코드가 이미 커밋 된 후 '확인'또는 '확인되지 않음'이라고 말하지 않고 코드를 기본 분기에 적극적으로 병합해야하기 때문에 사람들이 코드 검토를 더 심각하게 받아 들일 수 있다고 생각합니다.


1

모든 것을 위해 모든 분기점과 분기를 수행하지는 않습니다. 이것은 github의 오픈 소스 gem에 적합한 모델이지만 모델은 일반적으로 변경 사항에 대해 더 높은 수준의 신뢰를 갖는 조직 내에 있습니다.

소스 제어의 주요 포인트는 변경 사항을보고, 취소하고, 되돌릴 수 있다는 것입니다. 상황에 따라 많은 수의 포크와 지점을 만드는 것은 과잉 IMHO입니다.

나는 버전 업그레이드, 기술 부분 중 하나를 바꾸고, 기본 기반과 거의 공통이없는 3 개월 동안 서브 모듈에서 작업하는 것과 같은 지점을 예약 할 것입니다.

조직 내에서 전혀 포크하지 않을 수 있습니다. 이 모드는 본질적으로 사내 프로젝트와 다른 오픈 소스 프로젝트에 더 적합합니다.

테스트 및 코드 검토로 초점을 전환합니다. 사람들이 시험을 쓰고 있습니까? 그들은 좋은가요? 코드 검토가 완료 되었습니까?


1
우리는 실제로 테스트를 그렇게 많이 쓰지 않습니다. 우리는 서로의 코드를 반 자주 검토합니다. 버그 추적 및 솔루션 구현은 지금 우리에게 가장 중요합니다. 저는 모든 사람들이 테스트가 이론적으로 훌륭하고 0에서 시작하는 프로젝트에서 구현하기가 훨씬 쉽다는 데 동의 할 것입니다. 그러나 우리는 테스트를 작성하는 데 엄청난 레거시 프로젝트가 많이 있습니다. 나는 일반적으로 분기 및 분기에 동의합니다. 우리는 HG에서 왔기 때문에 실제로 공개 역사의 일부가 아닌 단기 지점을 갖는 것은 우리에게는 이상해 보이지만 분명히 목적을 알 수 있습니다.
Jim Rubenstein

실제로 기존 기능의 큰 코드 기반에서 문제가 발생하지 않습니다. 내일 큰 수정을 할 때는 테스트를 작성하고 다음 기능은 테스트를 작성하십시오. 당신은 되돌아 가서 오래된 것을 쓸 필요가 없습니다. 새로운 것을 쓰기 시작하면됩니다. 충분히 해보면 먼저 시험을 치를 확률이 높습니다. 그것은 중요한 소프트웨어의 전문 소프트웨어 개발입니다.
junky 2012

btw, 개인적으로 git을 사용하고 로컬 저장소가 있다는 사실을 알았습니다. svn과 달리 원격으로 푸시 (풀 / 풀 없음)하면 로컬에서 먼저 작동하는 데 도움이됩니다. 준비가 될 때까지 최종 푸시없이 추가하고 커밋 할 수있는 것이 더 쉽습니다.
junky 2012

ClearCase 동적 뷰를 사용하지 않는 한 (Pita가 사용하려는 경우 PITA를 알고 있음) 모든 체크 아웃은 실제로 포크이므로 중앙 집중식 버전 제어 시스템에서는 포함 할 수없는 모든 것이므로 여러 개정. 분산 및 분산 시스템 (git is one)에서 정기적 인 포크가 될 수 있습니다.
Jan Hudec 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.