개요
개발자로서 GitHub 잔디(기여 이력)는 꾸준함을 보여주는 상징으로 쓰인다.
그런 만큼 GitHub 잔디를 잘 나타낼 수 있도록 하는 몇 가지 설정들이 필요한데,
그런 설정들을 정리하고자 한다.
또한 자신의 프로젝트가 GitHub에 존재하지 않을 수 있는데, (Bitbucket, GitLab 등)
이러한 경우에도 해당 프로젝트들의 커밋 이력들을 GitHub에 연동하는 방법도 같이 알아보자.
1. Private contributions 설정
먼저 잔디가 많아 보이기 위해서는 private 한 기여들에 대해서도 잔디가 표시되어야 한다.
자신의 GitHub 홈에서 아래 사진에 표시된 Private contributions 버튼을 클릭하여 설정을 변경하자.
해당 설정을 적용하게 되면 아래와 같이 private repository에서의 활동들도 잔디에 포함된다.
2. Add Email Address
두 번째로는 내가 활동하는 이메일들을 설정해줘야 한다.
repository에 작업 내용을 커밋할 때 GitHub에 등록한 이메일이 아닌 다른 이메일로 커밋하는 경우가 있을 수 있는데,
이때 GitHub에 등록된 이메일이 아니면 GitHub 활동 이력으로 잡히지 않는다.
따라서 자신의 GitHub Settings에서 내가 커밋에 사용하는 이메일들을 내 GitHub 계정에 추가해 두어
활동 이력이 정상적으로 잡히도록 세팅해 두자.
(물론 이메일 등록 시 인증이 필요하다.)
3. 타 저장소 커밋 이력 연동
이 내용은 GitHub가 아닌 GitLab, Bitbucket 등 다른 Git 저장소를 사용하는 경우에만 해당한다.
1. 자신의 GitHub 계정에서 다른 저장소의 커밋 이력을 저장할 repository를 생성하고, clone 받아둔다.
2. 아래 repository를 clone 받고, IDE로 열어둔다.
https://github.com/miromannino/Contributions-Importer-For-Github
3. 터미널에서 아래 명령어를 입력하여 필요한 라이브러리들을 설치하자.
pip3가 설치되어 있지 않은 경우 pip3를 먼저 설치해야 한다.
pip3 install gitpython
pip3 install pathlib
4. Contributions-Importer-For-Github repository에서 run_script.py
파일을 생성하고 아래와 같이 작성한다.
import git
from git_contributions_importer import *
# 수정 필요 - import할 repository 목록
repo = [
git.Repo("../java-repo"),
git.Repo("../kotlin-repo"),
]
# 수정 필요 - 커밋 이력을 저장할 repository
mock_repo = git.Repo("../import-contributions")
importer = Importer(repo, mock_repo)
# 수정 필요 - 내가 repository에 커밋했던 이메일 목록
importer.set_author(['psh10066@gmail.com', 'psh10066@company.com'])
# mock repository의 마지막 커밋 시간 이후 커밋들만 import
importer.set_start_from_last(True)
importer.import_repository()
수정 필요라고 되어있는 주석 아래 코드 부분을 개인에 맞게 수정하자.
5. 아래 명령어를 통해 run_script.py
를 실행한다.
# Windows
py run_script.py
# Mac OS
python3 run_script.py
명령어 실행이 완료되면 이력 저장용 repository에서 커밋들이 쌓여있을 것이고,
이를 직접 push 해주면 아래와 같이 날짜에 맞게 이력이 추가된다.
주의할 점
- 사용하는 언어에 대한 Generator가 정의되어있지 않을 수 있다.
- 이러한 경우 이력 저장용 repository에 빈 커밋으로 생성되므로 GitHub 잔디 기준으로는 문제가 없다.
- 다만 커밋들이 저장되는 저장소에서 해당 언어에 대한 통계는 나타나지 않으므로
통계가 적용되게 하고 싶으면 해당 언어에 대한 Generator를 임의로 추가하고 script를 실행해야 한다.
- 1년보다 더 지난 이력에 대해서는 잔디가 생성되지 않는다.
- GitHub에서는 업데이트일 기준으로 지난 1년간의 이력만 변경이 가능하다.
- 이에 대한 내용은 아래 링크에서 확인할 수 있다.
https://docs.github.com/ko/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile
다른 저장소의 커밋 내역을 Import 하는 게 옳은가?
이 부분에 대해서는 갑론을박이 있을 수 있을 것 같다.
커밋을 mocking 하는 것도 결국 커밋 내역을 조작하는 것이라고 볼 수도 있기 때문이다.
이에 대한 내 생각은 아래와 같다.
일단 커밋 조작은 쉽게 가능하고, 생각보다 보편적이다.
이에 대한 내용은 구글링 해봐도 많이 나오는데,
1일 1 커밋을 하는 사람들이 일정에 대한 커밋을 놓치면 커밋 날짜를 변경하는 경우는 정말 많고,
스크립트를 돌려서 자동으로 커밋 히스토리를 채우고 조작하는 경우도 있다고 한다.
또한 GitHub 커밋 히스토리로 개발자의 꾸준함을 판단하는 경우가 많은 시대에서,
회사나 단체의 repository가 GitHub이 아니라면 해당 내용들은 GitHub 커밋 히스토리에 남지 않을 텐데,
그렇다면 그 개발자는 꾸준히 개발을 하지 않은 것인가?
나는 그렇지 않다고 생각한다.
따라서 내가 작업했던 내용들의 시간과 커밋 기록들만 단순히 import 하여 이력화하는 것은
내가 작업하지 않은 이력을 작업했다고 조작하는 것이 아니고,
단순히 GitHub로 이력만 관리하는 것이기 때문에 문제가 되지 않을 것이라고 생각한다.
마무리
위에서 잠깐 언급하였지만,
실제로 채용 시장에서도 GitHub 커밋 히스토리로 개발자의 꾸준함을 판단하는 경우가 많다.
조작이 쉽게 가능하다는 점과 불공평함이 발생할 수 있다는 점에서 우려가 있지만,
그럼에도 실제로 성실하게 커밋을 수행하는 개발자들이 훨씬 많을 것이라고 믿는다.
이와 관련된 커밋 히스토리에 대한 좋은 토론글을 발견하였는데, 다들 한 번씩 읽어보면 좋을 것 같다.
https://github.com/isaacs/github/issues/627
'Setting' 카테고리의 다른 글
[AWS] ECS EC2 프리티어로 Spring Boot 배포하기 (with GitHub Actions) (5) | 2024.11.04 |
---|---|
Mac OS에서 Docker로 Oracle DB 띄우기 (0) | 2024.07.07 |
Gmail에 도메인 DKIM 설정하기 with AWS Route 53 (3) | 2023.11.15 |
Gmail에 도메인 SPF 설정하기 with AWS Route 53 (0) | 2023.11.15 |
유용한 사이트 정리 (0) | 2023.09.23 |