본문 바로가기
개발 환경 & 개발 도구/GitHub

[GitHub 정리] 리포지토리 정리하기

by 민됴리 2024. 4. 4.
반응형

시작하며

  개발을 시작한 지 벌써 몇 년이 됐기 때문에 제 GitHub에는 무수히 많은 repository들이 있습니다. 그런데 repository들이 너무 많이 있기도 하고, 제목에 통일성도 없어서 필요한 코드를 찾는 데 시간이 오래 걸리는 상황이 종종 발생합니다. GitHub은 저의 소중한 코드를 보관하는 공간이기도 하지만 다른 사람들에게 저의 코드를 보여주는  공간이기도 합니다. 사람은 한 번에 너무 많은 양의 정보를 인식하지 못하기 때문에 핵심만 넣는 것이 중요하죠. 그래서 저를 위해, 제 GitHub을 보는 사람들을 위해 봄맞이 GitHub 정리를 하기로 결심했습니다. 우선은 repository부터 정리하고, readme.md 파일들, organization 등은 이후에 정리하려고 합니다. 이 글은 제가 repository들을 정리한 방법과 정리하면서 느낀 점에 관한 글입니다. GitHub을 오래 사용했지만, 아직 정리를 한 적이 없으신 분들께 큰 도움이 될 것이라고 생각합니다.

 

문제 인식 및 해결법

제 repository들의 문제점은 다음과 같습니다.

  1. Repository들이 너무 많다. 몇몇 repository들은 아마 앞으로 평생 열어보지 않을 것이다.
  2. 제목을 보고 어떤 코드들이 있는지 바로 알기 힘들다. 예를 들어 'A3-Backend'라는 제목을 가진 repository가 있다. 기억을 조금만 더듬어도 2월에 참가했던 해커톤에서 사용했던 repository임을 알 수 있지만, 1년만 지나도 어떤 repository인지 바로 떠올리기 힘들 것이다.
  3. 제목에 통일성이 없다. 어떤 제목은 소문자로만 이루어져 있는데, 어떤 제목은 대문자가 섞여 있다.

이러한 문제점들을 해결하기 위해 제가 repository들을 정리한 과정은 다음과 같습니다.

  1. Repository 제목 수정. Repository naming convention을 적용해서 통일성있게 제목들을 변경했으며, 어떤 코드들이 저장돼있는지 바로 알 수 있도록 제목을 수정함.
  2. 새로운 organization을 만들어서 필요 없는 repository 옮기기. 'minjae-archive'라는 이름의 organization을 만들어서 앞으로 잘 보지 않을 것 같은 repository들을 모두 옮김. 그리고 organization으로 옮긴 repository들의 visibility를 모두 private으로 변경함. 

자세한 방법을 보도록 하겠습니다.

 

리포지토리 제목 변경

정리하기 전 repository들의 모습

어떻게 repository 제목을 변경할지 고민하다가 respository naming convention도 있지 않을까 생각해서 검색해봤습니다. 공식적으로 정해진 convention은 당연히 없었지만, 많은 사람들이 사용하는 naming convention은 다음과 같았습니다.

  • 소문자 사용
  • 하이픈(-)사용. 공백 대신에 하이픈을 사용하여 단어를 구분. 언더바(_) 사용은 최대한 자제.
  • 특수문자 사용 자제

더 자세하 내용은 Stack Overflow에 있는 글을 참고해주세요.

 

가장 먼저 대문자였던 리포지토리 이름들을 전부 소문자로 수정했습니다. TIL 같은 경우에는 til로 바꾸면 뭔가 맛이 살지 않아서 풀어서 today-i-learned로 변경했습니다.

 

Repository가 어떤 코드들을 보관하고 있는지 한 눈에 알아볼 수 있도록 제목을 변경했습니다. 예를 들어서 해커톤에서 사용했던 repository들은 '해커톤이름-서비스명-Backend' 이런 식으로 변경했습니다. 하지만 해커톤 이름이 HACKY-TALKY, SPARCS Service Hackathon, SKYST 등 다양해서 다른 사람이 보면 이게 해커톤인가?하고 헷갈릴 수도 있을 것 같은데 추후 description과 readme.md 파일을 잘 작성하는 걸로 저 자신과 타협했습니다.

 

새로운 조직 만들기

앞으로 다시는 볼 확률이 매우 낮은 repository들을 보관할(버릴...) organization(조직)을 만들었습니다. Organization 이름은 제 이름인 minjae를 따서 minjae-archive로 명명했습니다. 로고 이미지는 ChatGPT를 사용해서 만들었는데, 상당히 잘 만들어진 것 같아서 기분이 좋습니다.

 

조직으로 필요 없는 리포지토리 전송하기

작년에 Flask와 NCP를 사용하여 CI/CD 파이프라인을 구축하는 연습을 했을 때 사용한 repository입니다. 제가 더 이상 Flask를 사용하지 않기도 하고, 지금은 CI/CD 파이프라인을 다른 방법으로 훨씬 더 잘 구축할 수 있기 때문에 deprecated된 repository입니다. 99%의 확률로 앞으로 'practice-flask-ci-cd' repository 안에 있는 코드를 보지 않을 것이기 때문에 'minjae-archive'로 옮기겠습니다.

 

Repository를 다른 organization 또는 다른 계정으로 옮기는 것을 transfer(전송)이라고 합니다. 'minjae-archive'로 전송하기 위해서 repository의 'Settings'에 들어갑니다.

 

Settings에서 스크롤을 맨 밑으로 내리면 'Danger Zone'이 있습니다. Repository에 중대한 변화를 줄 수 있는 설정들이 있는 곳입니다. Repository를 다른 사용자 또는 organization으로 전송하게 되면 소유권이 변경되고, collaborator 권한이나 설정 등도 변경될 수 있기 때문에 Transfer은 Danger Zone에 있습니다. 무엇보다 한 번 전송된 repository들은 다시는 되돌리지 못할 수 있습니다. 따라서 repository들을 다른 곳으로 전송하기 전에 내가 원하는 곳에 전송하는지, 진짜 전송해도 되는지를 곰곰히 생각해주세요. 그리고 위의 설명을 읽으면 내가 repository를 생성할 수 있는 권한을 가진 곳으로만 전송할 수 있다고 나와있습니다.

 

가장 먼저 어떤 곳으로 repository를 transfer할지 정합니다. 목적지를 꼭! 두 번! 확인해주세요. 전송됐을 때의 이름을 정할 수가 있는데, default값으로 현재 repository의 이름이 적혀 있습니다. 수정하셔도 됩니다. 마지막으로, 전송을 확정짓기 위해 현재 repository의 이름을 적어주고, 'I understand...' 버튼을 클릭하면 전송이 됩니다.

 

'minjae-archive'로 잘 transfer된 것을 볼 수 있습니다.

 

조금 전에는 public repository를 transfer한 것이라서 크게 주의할 점이 없었는데, private repository를 전송할 때는 주의할 점이 더 있습니다. GitHub Organization을 free plan으로 사용한다면 private organization에 최대 3명의 contributor만 있을 수 있습니다. 만약, 4명 이상의 contributor를 가진 private repository를 free plan을 사용하는 organization으로 옮기게 된다면 contributor 정보가 사라질 수도 있다고 합니다. 제가 transfer할 repository들은 저 혼자 만든 것이 대부분이어서 contributor 정보가 사라질 걱정이 없습니다. 그래서 transfer했습니다.

 

공개하고 싶지 않은 repository들 private으로 수정

필요 없는 repository들을 모두 'minjae-archive'로 전송했습니다. 그런데 이 repository들을 누군가 본다고 생각하면, 마치 제 흑역사를 공개하는 기분이 들어서 public repository들은 전부 private으로 바꿨습니다. 오른쪽 사진에 여전히 public으로 남아있는 repository들이 있는데 다른 repository들을 fork 뜬 repository들이기 때문입니다. Fork 뜬 repository들은 private으로 변경할 수 없습니다.

 

public repository를 private으로 수정하기 위해서 전송할 때와 마찬가지로 역시 Settings로 가셔서 Danger Zone에 가면 됩니다.

 

Public repository를 private으로 바꾸게 된다면 위와 같은 안내창이 나타날 수 있습니다. 만약 해당 repository에 star나 watcher가 있다면 private으로 변경될 때 모두 사라진다는 내용이 담겨있습니다. 저는 사라져도 상관없는 reposiotry들이어서 private으로 변경했는데, 만약 잃고 싶지 않으시다면 public을 유지하시면 됩니다.

 

마치며

  Repository들은 처음 정리해봐서 정리하는데 생각보다 오래 걸렸습니다. 히지만, 이번 정리를 통해서 앞으로는 repository를 만들 때 naming convention을 지키고, 어떤 repository들인지 한 눈에 알 수 있도록 제목을 지을 수 있게 됐습니다. 그리고 앞으로는 repository를 더 자주 만들게 되지 않을까 싶습니다. 원래는 아주 간단한 코딩을 할 때 '안 그래도 이미 repository가 많은데 새로 만들어서 내 GitHub을 더 더럽게 만들 필요가 있을까'라는 생각을 했는데, repository를 더 이상 사용하지 않게 되면 'minjae-archive'로 옮기면 되기 때문입니다.

반응형