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.