본문 바로가기
프로젝트/자리 있어요?

[Github] Fork해온 repository 작업에 대한 contribution 나타내기 (a.k.a 잔디 심기)

by 규글 2022. 7. 30.

작성 경위

 에이콘 아카데미에서 했던 Final project '자리.. 있어요?' 에 대한 reboot project를 진행하려고 했었다. 이게 수료 거의 직후에 작업했던 것이니 벌써 현재 기록 상 10~11 개월 정도 되었는데, 작업을 해두고 방법은 기록하지 않아서 또 찾아보게 되었다. 그래서 이참에 작성해두려고 한다.

 이 작업이 필요한 이유는 간단하다. '자리.. 있어요?' project는 필자의 repository에서 진행한 것이 아니라서 해당 내용을 fork해올 수밖에 없었고, fork해온 repository에서의 단순한 commit 작업은 contribution을 나타내지 않기 때문이다. 흔히 사람들이 말하는 '잔디를 심는다.' 가 불가능하기 때문이다. 이유는 다음과 같다.

 

 Github의 docs를 살펴보면 이미지와 같은 내용을 찾아볼 수 있다.[각주:1] Pull request나 discussion은 잔디 즉, contribution graph에 나타낼 수 있으나 fork 해온 repository에서는 불가능한 셈이다. Commit 또한 마찬가지이다. 개인적으로는 잔디를 심는다는 것이 어떤 의미인지는 아직 와닿지 않지만, 무엇인가 내가 해왔다는 것을 graph로 증명할 수 있는 하나의 표현 방식이라고 생각할 수는 있겠다. (다만 의미없는 작업으로 graph를 표기하는 것이 아니라면 말이다.)

 

Duplicating (복제)

 Github docs에는 repository를 duplicating(복제)하는 방법을 설명하고 있다.[각주:2] 먼저 복제할 repository를 bare 옵션으로 clone 해오고, 새로운 repository에 mirror 옵션으로 push 하면 된다.

 

 옵션에 대해 궁금하여 git docs에서 찾아보았다.[각주:3] mirror 옵션은 bare 옵션을 이미 내포하는 것이고, 그래서 둘의 차이라고 한다면 기존 remote 정보를 가지고 있는가 없는가의 여부인 것 같다. mirror 옵션은 기존 remote repository와 지속적인 교류를 할 수 있다고 한다면, bare 옵션은 그것이 불가능한 아예 독립적인 repository를 추구하게 되는 것 같다.

 

 이렇게 docs에 나온대로 bare 옵션으로 clone 하고, mirror 옵션으로 push해서 duplicating을 완료했다.

 

 

번외

 과거에 했던 작업에서 필자는 계속해서 오류로 고전했던 적이 있다. 친구가 이 게시물에 필자의 이야기를 넣어준 것을 이제야 보게 되었다.[각주:4] 이 내용을 한 번 복기해보려고 한다.

 

 기억이 왜곡되었는지, 이것보다 더 복잡한 오류들의 향연으로 기억하는데 잘못된 기억인 것 같다.

 

 복기가 잘 안된다. 작업이 잘 되는 것 같다가도 마지막에 이미지와 같은 오류 메시지를 접했던 것 같다. 과거의 다음 경우들 중 하나의 과정에서 문제를 일으켰을 것이다.

  1. 해당 repository를 옵션 없이 그냥 clone하고, 그것을 새 repository에 push하려고 했었다.
  2. 해당 repository 생성 당시 readme file을 만들어 remote branch의 이름이 default 설정에 의해 main으로 만들어졌으나, bare나 mirror 옵션으로 clone하고 새 repository에 mirror push 하려고 했었다.

 정확하게 과정이 기억나지는 않지만, main 이라는 remote repository의 이름 때문에 문제가 발생했었다. 이름이 main인 repository에 master라는 이름으로 된 branch를 넣으려고 하니 match가 되지 않았던 것이다. 해당 이름을 local이든 remote repository든 통일시켜준다면 정상적으로 mirror push가 된다.

댓글