Pull Request 방법

Pull Requst(PR)란 특정 브랜치를 당겨(pull) 마스터 브랜치에 병합(merge)하는 행위 혹은 그 절차를 가리킵니다. 다시 말해 Korpora 프로젝트에 자신의 개발 내용을 반영하는 것인데요. Korpora 프로젝트에 PR하는 방법은 다음과 같습니다.

  1. 기능 개발/개선과 관련한 이슈를 작성합니다 : https://github.com/ko-nlp/Korpora/issues/new
  2. 개발 브랜치(branch)를 엽니다 : 브랜치 이름은 keyword#issue_number로 합니다.
  3. 해당 브랜치에서 코드 개발을 합니다 : 커밋(commit) 메세지는 message (#issue_number) 형식을 따라야 합니다.
  4. 해당 브랜치에서 3번 개발과 관련한 테스트 코드를 작성합니다 : 테스트 코드는 Korpora/tests 디렉토리 이하에 작성합니다.
  5. 개발이 완료됐으면 dev 브랜치에 PR합니다.
  6. PR 코드 리뷰를 수행합니다.
  7. dev 브랜치에 머지합니다.
Danger

Korpora 프로젝트의 master는 패키지의 최신 릴리즈 버전입니다. 따라서 모든 PR은 dev 브랜치에 실시합니다. 절대로 master에 PR하지 않습니다.

PR은 다음과 같은 요건을 만족해야 합니다.

  • 작성한 코드가 어떤 에러나 경고 없이 실행이 되어야 합니다.
  • 작성한 코드에 대한 테스트 코드가 문제 없이 작동해야 합니다.
  • 기존 코드 역시 에러 없이 수행이 되어야 합니다.
Note

PR이 게시되자마자 새로 작성한 코드와 기존 코드를 포함한 모든 테스트 코드에 대한 검증이 시작됩니다. 이 검증까지 완료되어야 비로소 코드 리뷰(6번 절차)가 시작됩니다.

PR 예시를 들어보겠습니다. Korpora 프로젝트에 KorSTS 데이터을 추가한다고 가정해 봅시다.

  1. 기능 개발/개선과 관련한 이슈를 작성합니다 : https://github.com/ko-nlp/Korpora/issues/11
  2. 개발 브랜치를 엽니다 : 이슈 번호가 11번이기 때문에 개발 브랜치 이름은 sts#11로 합니다.
  3. 해당 브랜치에서 코드 개발을 합니다 : 커밋 메세지는 message (#11)로 형식으로 작성합니다.
  4. 해당 브랜치에서 3번 개발과 관련한 테스트 코드를 작성합니다 : Korpora/tests/test_korsts.py
  5. 개발이 완료됐으면 dev 브랜치에 PR합니다.
  6. PR 코드 리뷰를 수행합니다.
  7. dev 브랜치에 머지합니다.

한편 dev 브랜치의 개발 내용은 릴리즈 계획에 맞춰 주기적으로 master 브랜치에 반영하고 있습니다. master 브랜치를 pypi 등에 릴리즈하는 방식으로 버전 관리를 하고 있습니다. 각 릴리스 버전 역시 Korpora 리포지토리의 브랜치 형태로 아카이빙 중입니다.