나는 최근 GitHub에서 오픈 소스 협업을 시도하고 있으며 선호하는 진행 방법이 궁금한 상황에 처했습니다.
약 한 달 전, GitHub에서 이미 한동안 사용하고 있었고 몇 가지 버그를 발견하고 수정 한 라이브러리에 대한 프로젝트를 발견했습니다.
GitHub 공동 작업을 처음 시작했을 때 최근 활동이 가장 많고 버그를 수정하고 단위 테스트를 추가하고 GitHub로 푸시하여 풀 요청을 한 것으로 보이는 레포를 발견했습니다. 몇 시간 안에 내가 갈래 한 레포의 관리자는 PR을 받아들이고 기다리고 있던 다른 사람들의 다른 PR들과 합병했다.
이것에 의해, 나는 내가 찾은 3 개의 버그를 수정했다. 각각의 버그는 각각 다른 리포지토리에 있고, 각각에 대한 이슈와 풀 요청을 제출했다.
한 달 전이었고 풀 요청은 그 이후로 그대로 유지되었습니다. 내가 리 포크 한 리포지토리 사용자는 지난해 GitHub에 총 7 건의 기여를 한 적이 많지 않은 것처럼 보였으며 해당 리포지토리는 첫 번째 풀 요청 이후 커밋이 없었습니다.
그래서 내 질문 :
이 상황에서 어떻게 진행됩니까? 이상적으로는 부모 리포지토리에 병합되지 않은 자체 리포지토리에서 변경하고 변경하여 라이브러리의 조각화를 피하고 싶습니다. 그럼에도 불구하고 계속 버그 수정 및 기능 추가를 원하지만 모든 것을 내 마스터 브랜치에 병합하고 해당 브랜치에서 모든 새로운 수정 사항을 기반으로하면 포크 한 리포지토리의 관리자가 돌아 오면 승리합니다. 모든 변경 사항을 각 기능 / 버그 수정에 대해 별도의 풀 요청으로 분할 할 수 없습니다 (풀 요청은 일반적으로 기능 또는 버그 수 정당 하나의 풀 요청이어야 함을 읽었습니다).
원래 리포지토리와 같은 단계의 분기 하나를 유지하고 새 분기를 모두 그 분기에서 제외한 다음 모든 커밋을 마스터 분기에 병합해야합니까? 새로운 변화를 마스터 지점에 병합해야 할 때마다 전체 지점과 점점 더 부담스러운 작업이 생길 것 같습니다.
이와 같은 상황에 접근하는 일반적인 방법은 무엇입니까? 새로운 풀 요청을 검토하지 않는 원래 기고자들과 함께 프로젝트가 중단되는 것이 일반적입니다. 누군가가 단지 지배권을 잡고 그것을 실행해야하는 상황입니까? 원래 기여자가 다시 돌아와서 프로젝트를 다시 수행하려는 경우 조각화가 발생하는 것처럼 보입니다.
답변
나는 아직이 상황을 겪지 않았지만 그것이 내가 시도하는 것입니다.
소유자에게 연락하십시오
어쩌면 그들은 실제로 관심을 잃었지만 다른 사람, 특히 이미 헌신적 인 헌신을 보여준 사람에게 프로젝트를 기꺼이 옮기려고합니다.
그러나 그들은 아마도 다른 일 (일, 휴가, 질병, 다른 프로젝트)을 점령하고 PR을 처리 할 시간이 없었지만 나중에 그렇게 할 계획이 있습니다.
또는 어떤 이유로 든 프로젝트 작업을 실제로 중단했을 수도 있습니다.
묻지 않으면 찾을 수 없습니다.
커뮤니티와 연락하십시오
분명히 프로젝트에 기여했거나 적어도 프로젝트를 사용한 다른 사람들이 있습니다. 프로젝트를 분기 한 사람을 확인하십시오 (변경하지 않았더라도이 프로젝트가 번창하는 것에 관심이있을 수 있음). 누가 문제를보고했는지, 또는 댓글을 달았는지 확인하십시오. GitHub 외부에 메일 링리스트, 포럼 또는 StackOverflow 멤버와 같은 커뮤니티가있을 수도 있습니다.
나는 결국 당신이 정말로 프로젝트를 인수합니다. 당신은 그들의 지원을 원할 것입니다. 그리고 새로운 마스터 리포지토리가 어디에 있는지 알아야합니다.
좋은 풀 요청을 계속하십시오
이것은 당신이 그것에 대해 진지한 소유자와 지역 사회를 보여주고, 그들이 당신의 기여를 판단하도록합시다.
답변
원래 리포지토리의 소유자를 찾을 수없고 상당한 부재가있는 경우 다른 버전의 프로젝트로 내 리포지토리를 게시합니다.
이를 통해 라이브러리 개발을 주도하고 다시 업데이트하지 않고 모퉁이에서 죽지 않도록하십시오. 원래 소유자가 저장소를 닫은 경우에도 여전히 포크 버전을 사용할 수 있습니다.
답변
오늘날 대부분의 중소 규모의 무료 및 오픈 소스 프로젝트가 github, gitlab 또는 이와 유사한 호스트에서 호스팅되므로 웹 API를 사용하여 일부 프로세스 를 자동화 할 수 있습니다 .
원래 저장소가에 있다고 가정하면 https://github.com/someUserX/projectY/
프로세스는 다음과 같습니다.
-
( “manual”) 최소한 git committer 이메일과 이슈 (활성화 된 경우)를 통해 다른 방식으로 원저자에게 연락하십시오.
몇 주 내에 허가를 받았거나 응답이없는 경우, 호스팅 업체 웹 API를 사용하여 다음과 같은 단계를 수행하는 스크립트를 실행할 수 있습니다.
-
이라는 새로운 (GitHub) 조직을
projectY
만들고 그 안에 원래 저장소를 포크하십시오.https://github.com/projectY/projectY/
- 원래 작성자 및 풀 요청의 모든 작성자 (이미 병합되어 여전히 열려있는)를 조직 관리자로 추가
- 새 포크의 원래 저장소에서 모든 (열린) 풀 요청을 다시 작성하십시오.
- (공개) 문제와 동일하게 수행하십시오.
- 모든 리포지토리 관리자에게 알립니다
- “폐기 된”/ “아카이브 된”통지를 추가하고 README 상단의 새 리포지토리에 링크를 추가하여 이전 리포지토리에 대한 마지막 풀 요청을 만듭니다.