본문 바로가기
Gerrit/Gerrit <-> Slack 연동

7. Hook 할때 커밋 메시지 가져오기

by 실짱 2023. 10. 18.

이제 마지막이다.

여기까지 왔으면 거의 다 온거다 ^^

 

 

앞에 포함된 내용이지만 이 부분은 따로 떼서 설명할 필요가 있다. (comment-added.sh 에 이미 코딩된 내용)

 

슬랙에 포스팅할때 커밋 메세지를 함께 넣어줘야 한다.

 

그런데 이 커밋 메세지를 가져오는게 생각보다 쉽지 않았다.

그 과정을 살펴보자.

 

우선 우리가 작성한 hook 은 comment-added 다.

이 hook 은 comment 가 add 될때 트리거 되기때문에 거기에 해당하는 정보들만 있다.

공식적으로 이 hook 에서 알수 있는 정보들은 아래와 같다.

https://gerrit.googlesource.com/plugins/hooks/+/refs/heads/master/src/main/resources/Documentation/hooks.md

### comment-added

Called whenever a comment is added to a change.

```
  comment-added --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --author <comment author> --author-username <username> --commit <commit> --comment <comment> [--<approval category id> <score> --<approval category id> <score> --<approval category id>-oldValue <score> ...]
```

 

자세히 봐야 알수 있긴 하지만 commit message 를 주지는 않는다.

그런데 우리는 슬랙에 커밋 메시지를 포함시켜야지만 어떤 내용의 리뷰인지를 알수 있기때문에 이 커밋 메시지를 포함시켜야만 했다.

 

흠…

고민이 시작되었다.

다른 hook 을 고민해봤지만 , 다른 hook 은 change owner 라든가 또 다른 정보가 없었다.

물론 comment-added 훅 역시 커밋 메시지뿐 아니라 다른 정보도 필요해서 추후에 플러그인을 수정하기는 했다.

<다른 정보 포함시킨 수정>

더보기
private , wip 여부가 필요해서 추가 작업한 모습

 

근데 커밋 메시지는 CommentAdded.java 자체로 들어오는 정보가 없기때문에 플러그인을 수정한다고 해서 해결될 이슈가 아니었다.

 

다만,commit id 는 주고 있다.

 

--commit <commit> : 여기에 commit id 가 실려온다.

 

commit id 를 안다면…. 이걸로 추적이 되지 않을까..?

오호~ 역시 된다.

git show 명령어로 commit message 를 가져올 수 있다.

git show [커밋id]

 

git show [커밋id] 모습

더보기

git show 07af67a32cf692e36f0b8f8d90184d254f8320b2

 

 

 

기대와 달리, 난 커밋 메시지만 필요한데, 커밋의 전제 정보 (diff 까지도) 가 나왔다.

다시 여기저기 삽질 해보니 적당한 포맷 옵션으로 커밋 메시지만 뽑을 수 있었다.

git show -s --format=%B [커밋id]

 

git show -s --format=%B [커밋id] 모습

더보기

git show -s --format=%B 07af67a32cf692e36f0b8f8d90184d254f8320b2

 

게릿은 자체 git repository 를 가지고 있고 여기에서 리뷰가 일어난다.

게릿의 git repository 는 초기 설정시에 gerrit설치폴더/git 이다. ([Gerrit/Gerrit 설치 및 자체 작업] - Gerrit 설치 의 [Git repository 지정] 부분 참고)

따라서 위 show 명령어를 위 repository 의 해당 프로젝트에 가서 실행해주면 커밋 메시지를 가져올 수 있다.

최종적으로 아래처럼 코딩해서 커밋 메시지를 가져올 수 있었다.

# 특정 프로젝트의 폴더명을 위해서 project 정보 저장 (여기에 프로젝트명이 들어가고 git repository 폴더는 이와 동일한 이름으로 만들어진다)
project=${10}

# git repository 로 이동하기 위해 path 지정
repo_dir="/opt/gerrit/gerrit/git"$project".git"

# commit message 가져오기
cd $repo_dir
commit_message=$(git show -s --format=%B $commit)

# 다음 작업을 위해 원래 폴더로 이동
cd -

 

혼동하지 말자 .

 

Gerrit 과 Git 은 별개가 아니다.

 

Gerrit 은 자체 Git repository 를 저장소로 사용하고 여기에 쌓이는 각 commit 들을 리뷰하는 툴이다.

따라서 Gerrit 에서 git repository 로 이동하고 나면 , 이제부터는 Git 이다.

 


< Prev     6. 게릿 리뷰 웹훅 (3/3)

'Gerrit > Gerrit <-> Slack 연동' 카테고리의 다른 글

2. 생각의 흐름  (1) 2023.10.18
3. 슬랙 채널에 포스팅 하기  (0) 2023.10.18
4. 게릿 리뷰 웹훅 (1/3)  (0) 2023.10.18
5. 게릿 리뷰 웹훅 (2/3)  (0) 2023.10.18
6. 게릿 리뷰 웹훅 (3/3)  (0) 2023.10.18