첫 오픈소스 커밋

목표

요즘 공부하고 있는 Go 언어로 작성된 오픈소스에 커밋을 한다.

타겟 깃헙레포

go-ini/ini - https://github.com/go-ini/ini
ini 파일에 작성된 값을 읽어와 초기 설정을 하는 패키지 타겟 깃헙

레포 스텟(2020.9.18 기준)
Watch: 77
Star: 2.2K
Fork: 271
Contributor: 48
Latest commit: 13days ago

위 레포에 커미하게된 계기

Golang을 어떻게 하면 잘 학습하고 써먹을 수 있을까 고민을 하다가 잘 만들어진 레포를 클론받아서 똑같이 베껴보자는 결정을 내렸다.(여기엔 모든 주석도 포함) 그럼으로써 코드 구조나 문법 등을 파악 할 수 있을 것이라 생각했다.
하지만, 막상 작업을 진행하다 보니 처음 의도와는 다르게 단순히 베껴쓰기에만 몰두하는 것 아니겠는가…? 이 방법으로는 학습이 제대로 되지 않을 것 같아서 중간에 그만두었지만 별개로 얻은 것도 있다.

바로 오픈소스 커밋 기회!!!
주석까지 베껴쓰다보니 주석 오타들을 발견하게 된 것이다. 그래서 이 참에 오픈소스 커밋이나 해보게 됐다.

커밋하기

저장소 포크

저장소 포크
Fork를 클릭해 내 저장소에 원본 소스를 가져온다.

저장소 클론

1
git clone https://github.com/mswdevsla/mswdevsla.github.io.git   

저장소를 클론해서 내 로컬 환경에서 코드 수정 할 준비를 한다.

코드 수정

내가 수정할 코드는 2군데다. 정확히 말하면 주석 중에 2 단어!!
원본 코드
ini/file.go

1
//so it's safer to save to a temporary file location and rename afte done.

ini/ini.go

1
2
// KeyValueDelimiter is the delimiter that are used to separate key and value output. By default, it is "=".
KeyValueDelimiterOnWrite string

수정 코드
ini/file.go

1
//so it's safer to save to a temporary file location and rename after done.

ini/ini.go

1
2
// KeyValueDelimiterOnWrite is the delimiter that are used to separate key and value output. By default, it is "=".
KeyValueDelimiterOnWrite string

거의 비슷해보이지만 잘 찾아 보면 오타와 틀린 변수 사용을 찾을 수 있다.

 afte -> after / KeyValueDelimiter -> KeyValueDelimiterOnWrite

커밋 / 푸시

fix-typo 라는 브랜치를 만들고 커밋 & 푸시를 진행한다.

1
2
3
4
git checkout -b fix-typo
git add *
git commit -m "Fix typo in a comment"
git push origin fix-typo

풀리퀘스트(Pull request)

원본 저장소에 작업 내용을 반영해 달라고 요청한다. 해당 커밋에 대한 상세 내용을 작성한다. 나는 오타 수정이기 때문에 설명이 굉장히 간결하다.

풀리퀘스트

모든 체크가 성공했고 문제없이 풀리퀘스트를 완료했다.

마지막 남은 단계

기다림 😭
이제 커밋 적용은 내 손을 벗어났다. 메인테이너들이 풀 리퀘스트를 확인하고 마스터 브랜치에 반영해 줄지를 기다려야한다.
만약, 저장소 관리자가 더 이상 관리를 안한다면 아마 적용될 일은 없을텐데 다행히 최근 풀 리퀘스트 반영 날짜가 ‘9 days ago’ 인 걸 보니 문제 없으면 반영해주지 않을까 싶다 ㅎㅎ

이 글은 커밋하는 시점에 작성중이라 머지 완료 까지 포스팅하지 못 하지만 추후에 머지가 된다면 해당 내용으로 재 작성하겠습니다.

1시간 후

최소 며칠은 걸릴 줄 알았던 머지였으나, 1시간 후에 날아온 깃헙 메일을 보며 메인테이너가 굉장히 성싱하다는 것을 깨달았다 😄
친절하게 감사하단 코멘트 달아주는 것도 빼먹지 않았다.

머지 나의 첫 오픈소스 커밋은 이렇게 성공했다.
그리고 난 이제 이렇게 외치고 다닐것이다.

난 컨트리뷰터다!!!


출처 - 오픈소스 입문을 위한 아주 구체적인 가이드
출처 - 좋은 git commit 메시지를 위한 영어 사전