Go 컨트리뷰션 가이드

1 개요[ | ]

기여 가이드

Go 프로젝트는 모든 기여자를 환영합니다.

본 문서는 Go 프로젝트에 기여하는 과정을 안내하는 가이드로, 다른 오픈소스 프로젝트에서 사용하는 방식과 조금 다릅니다. Git과 Go에 대한 기본적인 이해가 있다고 가정합니다.

여기에 있는 정보 외에도 Go 커뮤니티는 CodeReview 위키 페이지를 유지관리합니다. 리뷰 프로세스를 배우면서 자유롭게 위키에 기여해 보세요.

gccgo 프론트엔드는 다른 곳에 있습니다 gccgo에 기여하기를 참조하세요.

2 기여자 되기[ | ]

2.1 개요[ | ]

첫 번째 단계는 Go 기여자로 등록하고 환경을 구성하는 것입니다. 필수 단계의 체크리스트는 다음과 같습니다.

  • 0단계: Go에 기여하는 데 사용할 단일 Google 계정을 결정합니다. 다음 모든 단계에 해당 계정을 사용하고 git 해당 계정의 이메일 주소로 커밋을 생성하도록 구성되어 있는지 확인하세요.
  • 1단계: CLA(기여자 라이선스 계약)에 서명하고 제출합니다 .
  • 2단계: Go Git 저장소에 대한 인증 자격증명을 구성합니다. go.googlesource.com을 방문하여 페이지 오른쪽 상단 메뉴 표시줄에서 '비밀번호 생성'을 클릭하고 지침을 따르세요.
  • 3단계: 이 페이지를 방문하여 Go 팀에서 사용하는 코드 리뷰 도구인 Gerrit에 등록하세요. CLA 및 등록은 귀하의 계정에 대해 한 번만 수행하면 됩니다.
  • 4단계: go install golang.org/x/review/git-codereview@latest를 실행하여 git-codereview를 설치합니다.

이러한 단계를 수행해주는 자동화 도구가 있어서, 다음과 같이 실행해도 됩니다.

$ go install golang.org/x/tools/cmd/go-contrib-init@latest
$ cd /code/to/edit
$ go-contrib-init

이 장의 나머지 부분에서는 이러한 지침에 대해 자세히 설명합니다. (수동으로 또는 도구를 통해) 위 단계를 완료한 경우 '코드를 기여하기 전에'로 이동하세요.

2.2 0단계: Google 계정 선택[ | ]

Go에 대한 기여는 특정 이메일 주소를 가진 Google 계정을 통해 이루어집니다. 프로세스 전체와 이후의 모든 기여에 대해 동일한 계정을 사용해야 합니다. 개인 주소를 사용할지 회사 주소를 사용할지 결정해야 할 수도 있습니다. 선택은 기여자가 작성하고 제출할 코드에 대한 저작권을 누가 소유하는지에 따라 달라집니다. 사용할 계정을 결정하기 전에 이 주제를 고용주와 논의할 수 있습니다.

Google 계정은 Gmail 이메일 계정, G Suite 조직 계정 또는 외부 이메일 주소와 연결된 계정일 수 있습니다. 예를 들어 G Suite를 통해 관리되지 않는 기존 회사 이메일을 사용해야 하는 경우 기존 이메일 주소와 연결된 계정을 만들 수 있습니다.

또한 선택한 이메일 주소를 사용하여 커밋을 생성하도록 Git 도구가 구성되어 있는지 확인해야 합니다. Git을 전역적으로(모든 프로젝트의 기본값으로) 설정하거나 로컬로(단일 특정 프로젝트의 경우) 설정할 수 있습니다. 다음 명령어를 사용하여 현재 설정을 확인할 수 있습니다.

$ git config --global user.email # 현재 전역 설정 확인
$ git config user.email # 현재 로컬 설정 확인

설정된 주소를 변경하려면:

$ git config --global user.email name@example.com # 전역 설정 변경
$ git config user.email name@example.com # 로컬 설정 변경

2.3 1단계: 기여자 라이선스 계약[ | ]

Go 프로젝트에 첫 번째 변경사항을 보내기 전에 다음 두 CLA 중 하나를 완료해야 합니다. 어떤 CLA에 서명해야 하는지는 기여자의 저작물에 대한 저작권 소유자가 누구인지에 따라 다릅니다.

Google Developers Contributor License Agreements 웹사이트 에서 현재 서명된 계약을 확인하고 새 계약에 서명할 수 있습니다. 기여자의 기여에 대한 저작권 보유자가 이미 다른 Google 오픈소스 프로젝트와 관련하여 계약을 완료한 경우 다시 계약을 완료할 필요가 없습니다.

제출하려는 코드의 저작권 소유자가 변경된 경우(예: 새 회사를 대신하여 코드 기여를 시작하는 경우) golang-dev 메일링 리스트(golang-dev@googlegroups.com)로 메일을 보내주세요. 이를 통해 상황을 알 수 있으므로 적절한 계약이 완료되었는지 확인할 수 있습니다.

2.4 2단계: Git 인증 구성[ | ]

기본 Go 저장소는 Google이 호스팅하는 Git 서버인 go.googlesource.com에 있습니다. 웹 서버에서의 인증은 Google 계정을 통해 이루어지지만, 이에 액세스하려면 컴퓨터에서도 git을 설정해야 합니다. 다음과 같이하세요:

  1. go.googlesource.com을 방문하여 페이지 오른쪽 상단 메뉴 표시줄에서 '비밀번호 생성'을 클릭하세요. 로그인을 위해 account.google.com으로 리디렉션됩니다.
  2. 로그인하면 "Git 설정"이라는 제목의 페이지로 이동됩니다. 이 페이지에는 로컬로 실행될 때 Git이 고유한 인증 키를 보유하도록 구성하는 개인화된 스크립트가 포함되어 있습니다. 이 키는 SSH 키 작동 방식과 유사하게 서버에서 생성 및 저장되는 키와 쌍을 이룹니다.
  3. 비밀 인증 토큰을 .gitcookies 파일에 저장하려면 터미널에서 이 스크립트를 로컬로 복사하고 실행하세요. Windows 컴퓨터를 사용하고 cmd를 실행하는 경우, 대신 노란색 상자의 지침에 따라 명령어를 실행해야 합니다. 그렇지 않으면 일반 스크립트를 실행하십시오.

2.5 3단계: Gerrit 계정 만들기[ | ]

Gerrit은 Go 관리자가 코드 제출을 논의하고 검토하기 위해 사용하는 오픈소스 도구입니다.

계정을 등록하려면 go-review.googlesource.com/login/을 방문하여 위에서 사용한 것과 동일한 Google 계정을 사용하여 한 번 로그인하세요.

2.6 4단계: git-codereview 명령어 설치[ | ]

Go에 대한 변경사항은 누가 변경했는지에 관계없이 승인되기 전에 리뷰되어야 합니다. git-codereview라는 커스텀 git 명령어를 사용하면 변경사항을 Gerrit으로 보내는 작업이 단순화됩니다.

다음을 실행하여 git-codereview 명령어를 설치합니다.

$ go install golang.org/x/review/git-codereview@latest

git 명령어가 찾을 수 있도록 git-codereview이 쉘 경로에 설치되어 있는지 확인하세요.

$ git codereview help

오류가 아닌 도움말 텍스트를 출력합니다. 오류가 출력되면 $GOPATH/bin가 $PATH에 있는지 확인하세요.

Windows에서는 git-bash를 사용할 때 git-codereview.exe가 git exec-path에 있는지 확인해야 합니다. git --exec-path를 실행하여 올바른 위치를 찾은 다음 심볼릭 링크를 생성하거나 $GOPATH/bin에서 이 디렉토리로 실행파일을 복사하세요.

3 코드를 기여하기 전에[ | ]

3.1 기여하는 곳[ | ]

3.2 이슈 트래커 확인[ | ]

3.3 새로운 문제가 있으면 이슈 열기[ | ]

4 GitHub을 통해 변경사항 보내기[ | ]

5 Gerrit을 통해 변경사항 보내기[ | ]

5.1 개요[ | ]

5.2 1단계: 소스코드 복제[ | ]

5.3 2단계: 새 브랜치에서 변경사항 준비[ | ]

5.4 3단계: 변경사항 테스트[ | ]

5.5 4단계: 리뷰를 위해 변경사항 보내기[ | ]

5.6 5단계: 리뷰 후 변경사항 수정[ | ]

6 좋은 커밋 메시지[ | ]

6.1 첫 줄[ | ]

6.2 본문[ | ]

6.3 이슈 참조[ | ]

7 리뷰 프로세스[ | ]

7.1 초보자가 흔히 하는 실수[ | ]

7.2 트라이봇[ | ]

7.3 리뷰[ | ]

7.4 투표 규칙[ | ]

7.5 승인된 변경사항 제출[ | ]

7.6 추가 정보[ | ]

8 기타 주제[ | ]

8.1 저작권 헤더[ | ]

8.2 메일 오류 트러블슈팅[ | ]

8.3 변경사항을 빠르게 테스트하기[ | ]

8.4 리뷰어 지정 / 다른 사람을 CC 지정[ | ]

8.5 클라이언트 동기화[ | ]

8.6 다른 사람의 코드 검토[ | ]

8.7 git aliases 설정[ | ]

8.8 여러 종속 변경사항 보내기[ | ]

9 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}