본문 바로가기
Gerrit/Gerrit 일반

6. Change ID

by 실짱 2023. 9. 1.

Gerrit 은 Change-ID 라는게 있다.

이게 뭐고 Git 의 commit-id 랑은 어떤 차이점이 있는지 알아보자.

 

우선 git 의 commit-id 부터 알아보자.

Git은 SHA-1 해시를 사용하여 체크섬을 만든다. 만든 체크섬은 40자 길이의 16진수 문자열이다. 파일의 내용이나 디렉토리 구조를 이용하여 체크섬을 구한다. SHA-1은 아래처럼 생겼다.

24b9da6552252987aa493b52f8696cd6d3b00373

commit id 는 개발자가 수정사항을 git repository 에 반영할때마다 생성되는 고유 ID 다.

이 고유 ID 로 Git 은 해당 수정사항을 관리한다.

git log 를 통해 보면 쉽게 id 를 확인할 수 있다.

 

확인을 위해 간단하게 커밋을 하나 만들어 보자.

그리고 git log 로 확인해 보자.

94e198 로 시작하는 commit id 하나가 만들어졌다.

 

commit 을 하나 더 만들고 확인해 보자.

Fig.1 커밋 2개 반영

9d6a5d 로 시작하는 commit id 가 뒤이어 만들어졌다.

 

그런데 두번째 커밋에 문제가 있어 두번째 커밋을 수정해야 할 상황이 생겼다.

amend 옵션으로 두번째 커밋을 고쳐서 반영해보자.

다시 git log 로 확인하자.

Fig.2 두번째 커밋 수정

차이점이 보이는가?

Fig.1 과 Fig.2 는 결과적으로 커밋이 2개만 있는 같은 상황인다.

그런데 Fig.1 과 Fig.2 의 두번째 커밋의 커밋 id 가 달라졌다.

최초 commit
수정후 amend commit

오호~

commit id 는 git commit 이라는 명령어를 수행할때마다 새롭게 부여된다.


이제 Change id 를 알아보자.

얼핏보면 commit id 랑 별반 다를것 같지 않다.

 

필요한 작업을 하고 commit 을 한다.

git log 로 확인해보면 commit id 와 change id 가 모두 생성되어 있음을 알 수 있다.

서버에 push 하려고 했는데, Jira 티켓 아이디를 안넣어서 reject 먹었다.

다시 재수정 하자.

git log 로 상태를 확인해 보자.

뭔가 좀 이상한게 보이는가?

commit id 는 달라졌는데 Change-Id 는 동일하다.

응….??

일단 서버에 push 하고

 

한번 더 수정해보자.

git log 로 확인해 보자.

역시 commit id 는 변경이 되었는데 change-id 는 변경이 되지 않았다.

 

오호~

Change-Id 는 한개 commit 이 여러번 수정되어도 변하지가 않는다.

여튼 서버에 push 하자.


이번엔 게릿 웹의 코드 리뷰를 보자.

두번 서버에 push 했기때문에 patchset 이 2개이고 두번째 patchset 의 commit id (786ef5c) 가 표시되고 있다.

저 patchset을 첫번째로 선택하면 첫번째 commit id (9988df4)가 표시된다.

즉, change-id 는 Gerrit 에 push 한 코드리뷰의 id 이고 이는 하나의 리뷰에 대해서는 커밋을 여러번 하더래도 변하지 않는다.

하나의 change-id 로 여러 commit 을 관리해서 관련된 수정사항을 하나의 리뷰에 넣는 설계인 것이다.

 

이는 리뷰를 받다보면 이런저런 지적질로 재수정이 허다하게 발생할것이기 때문에 리뷰만을 위한 별도 id 가 필요했던 것이다.

이렇게 함으로써 게릿은 한개 리뷰에 대한 모든 변경사항을 축적할 수 있고 이는 리뷰어,리뷰이 모두에게 히스토리로써 남게 된다.

 

정리하면,

commit id = local 에 커밋할때 생성되는 id, amend 커밋시에는 변경된다.
change id = 게릿 서버에 push 할때 리뷰 단위로 사용되는 id, amend 커밋시에도 변경되지 않는다.

 

[참고] Change-Id 는 커밋 아이디와 구분을 위해서 대문자 “I” 로 시작한다.

< Prev     5. Gerrit 점수에 대한 단상

'Gerrit > Gerrit 일반' 카테고리의 다른 글

1. SW 단상 (코드 리뷰)  (0) 2023.10.17
2. Gerrit 이란?  (0) 2023.10.17
3. Gerrit Workflow  (0) 2023.10.17
4. Git vs. Gerrit  (0) 2023.10.17
5. Gerrit 점수에 대한 단상  (2) 2023.10.17