Pull Request 방법
Pull Requst(PR)란 특정 브랜치를 당겨(pull) 마스터 브랜치에 병합(merge)하는 행위 혹은 그 절차를 가리킵니다. 다시 말해 Korpora
프로젝트에 자신의 개발 내용을 반영하는 것인데요. Korpora
프로젝트에 PR하는 방법은 다음과 같습니다.
- 기능 개발/개선과 관련한 이슈를 작성합니다 : https://github.com/ko-nlp/Korpora/issues/new
- 개발 브랜치(branch)를 엽니다 : 브랜치 이름은
keyword#issue_number
로 합니다. - 해당 브랜치에서 코드 개발을 합니다 : 커밋(commit) 메세지는
message (#issue_number)
형식을 따라야 합니다. - 해당 브랜치에서 3번 개발과 관련한 테스트 코드를 작성합니다 : 테스트 코드는
Korpora/tests
디렉토리 이하에 작성합니다. - 개발이 완료됐으면
dev
브랜치에 PR합니다. - PR 코드 리뷰를 수행합니다.
dev
브랜치에 머지합니다.
Danger
Korpora
프로젝트의 master
는 패키지의 최신 릴리즈 버전입니다. 따라서 모든 PR은 dev
브랜치에 실시합니다. 절대로 master
에 PR하지 않습니다.
PR은 다음과 같은 요건을 만족해야 합니다.
- 작성한 코드가 어떤 에러나 경고 없이 실행이 되어야 합니다.
- 작성한 코드에 대한 테스트 코드가 문제 없이 작동해야 합니다.
- 기존 코드 역시 에러 없이 수행이 되어야 합니다.
Note
PR이 게시되자마자 새로 작성한 코드와 기존 코드를 포함한 모든 테스트 코드에 대한 검증이 시작됩니다. 이 검증까지 완료되어야 비로소 코드 리뷰(6번 절차)가 시작됩니다.
PR 예시를 들어보겠습니다. Korpora
프로젝트에 KorSTS 데이터을 추가한다고 가정해 봅시다.
- 기능 개발/개선과 관련한 이슈를 작성합니다 : https://github.com/ko-nlp/Korpora/issues/11
- 개발 브랜치를 엽니다 : 이슈 번호가 11번이기 때문에 개발 브랜치 이름은
sts#11
로 합니다. - 해당 브랜치에서 코드 개발을 합니다 : 커밋 메세지는
message (#11)
로 형식으로 작성합니다. - 해당 브랜치에서 3번 개발과 관련한 테스트 코드를 작성합니다 :
Korpora/tests/test_korsts.py
- 개발이 완료됐으면
dev
브랜치에 PR합니다. - PR 코드 리뷰를 수행합니다.
dev
브랜치에 머지합니다.
한편 dev
브랜치의 개발 내용은 릴리즈 계획에 맞춰 주기적으로 master
브랜치에 반영하고 있습니다. master
브랜치를 pypi 등에 릴리즈하는 방식으로 버전 관리를 하고 있습니다. 각 릴리스 버전 역시 Korpora
리포지토리의 브랜치 형태로 아카이빙 중입니다.