이제 마지막이다.
여기까지 왔으면 거의 다 온거다 ^^
앞에 포함된 내용이지만 이 부분은 따로 떼서 설명할 필요가 있다. (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 훅 역시 커밋 메시지뿐 아니라 다른 정보도 필요해서 추후에 플러그인을 수정하기는 했다.
<다른 정보 포함시킨 수정>
근데 커밋 메시지는 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 이다.
'Gerrit > Gerrit <-> Slack 연동' 카테고리의 다른 글
2. 생각의 흐름 (1) | 2023.10.18 |
---|---|
3. 슬랙 채널에 포스팅 하기 (4) | 2023.10.18 |
4. 게릿 리뷰 웹훅 (1/3) (0) | 2023.10.18 |
5. 게릿 리뷰 웹훅 (2/3) (0) | 2023.10.18 |
6. 게릿 리뷰 웹훅 (3/3) (0) | 2023.10.18 |