본문 바로가기

git hook을 이용하여 개발일지 자동화 고도화하기

@정소민fan2026. 1. 20. 23:15

이전 포스팅에서 이어진다

 

개발일지 자동화는 했는데...

문제가 하나 있었다

내가 작성한 모든 커밋을 개발일지에 추가하고 싶었지만, 그럴수가 없었다는 것

왜냐하면 github mcp는 각 레포지토리의 디폴트 브랜치에서만 커밋을 읽을 수 있었다

하지만 난 여러 브랜치를 만들어서 작업하고 있고, 이 브랜치에서도 커밋을 읽어오기를 원했다

다른 브랜치에서 mcp가 커밋을 읽으려면 정확한 레포 이름과 브랜치명을 알아야 했다

각 레포마다 모든 브랜치 리스트를 읽어올수 있는 기능이 있으면 참 좋겠지만 그런건 없었다

아 이걸 어떻게 할까... 하다가 git hook을 이용하기로 했다

git hook

git hook은 git에서 특정 이벤트가 발생할 떄 자동으로 실행되는 스크립트이다

그래서 이걸 어떻게 쓸 거냐?

로컬에서 push가 발생하면 해당 원격 레포 이름과 push한 브랜치의 이름을 로그로 남기도록 할 것이다

그러면 이 로그를 mcp를 통해 읽어서 커밋을 가져올 수 있을 것이다

간단히 말해 push가 발생한 모든 브랜치를 기록해두고 읽어오게 한다는 뜻이다

 

먼저 pre-push 라는 이름으로 파일을 만들자

반드시 pre-push로 만들어야 한다. 이름에 따라 실행되는 트리거가 다르다

pre-push는 push가 일어나기 직전에 실행되는 스크립트이다

 

그 다음 전역 훅 디렉토리 설정을 해야한다

훅은 각 프로젝트의 .git/hooks에 설정해서 프로젝트 단위로 설정되지만, 나는 모든 프로젝트의 커밋을 개발일지로 쓰고 싶으니 글로벌로 설정해야 한다

pre-push 스크립트를 둘 폴더를 정하고, 그 폴더 경로를 다음 명령어에 넣자

git config --global core.hooksPath {폴더 경로}

이러면 모든 프로젝트의 push를 추적한다

 

스크립트는 다음과 같다

아 그리고 git hook을 쓰려면 git bash가 먼저 설치되어있어야한다

#!/bin/bash

# 원격 저장소 URL에서 owner/repo 추출
REMOTE_URL=$(git remote get-url origin)

if [[ $REMOTE_URL == *"github.com"* ]]; then
    REPO_PATH=$(echo "$REMOTE_URL" | sed -E 's/.*github\.com[\/:](.+)(\.git)?$/\1/' | sed 's/\.git$//')
else
    REPO_PATH=$(basename $(git rev-parse --show-toplevel))
fi

BRANCH=$(git rev-parse --abbrev-ref HEAD)
DATE=$(date +%Y-%m-%d)
LOG_FILE="$HOME/.push-log/$DATE.log"
ENTRY="$REPO_PATH $BRANCH"

mkdir -p "$HOME/.push-log"

# 중복 체크 후 추가
if ! grep -qF "$ENTRY" "$LOG_FILE" 2>/dev/null; then
    echo "$ENTRY" >> "$LOG_FILE"
fi

이렇게 사용하면 로그 파일(.push-log/{오늘 날짜})에 {owner name}/{remote repo name} {branch name} 식으로 기록되게 된다.

goochul-im은 내 github 이름이고, HH-Lite-Architecture-Reservation-Service라는 레포지토리의 cache에 푸시가 발생했다는 의미이다

그럼 이제 이 로그 폴더를 syncthing을 통해 동기화하면 홈서버에서 에이전트가 이 로그 파일을 읽게 될 것이다.

홈서버 스크립트 수정

PUSH_LOG_DIR="/home/$USER/git-log"
...

# 오늘 푸시 로그 읽기
if [ -f "$PUSH_LOG_DIR/$TODAY.log" ]; then
    PUSH_LOG=$(cat "$PUSH_LOG_DIR/$TODAY.log")
else
    PUSH_LOG="오늘 푸시 기록 없음"
fi

오늘 푸시된 레포/브랜치 목록:
$PUSH_LOG
...

- 위 '오늘 푸시된 레포/브랜치 목록'의 각 항목에 대해:
  - GitHub MCP로 해당 레포의 해당 브랜치에서 오늘($TODAY) 푸시된 커밋 조회
  - 형식: owner/repo branch → 해당 브랜치의 오늘 커밋 조회

/git-log는 내가 설정해둔 push log 동기화 폴더이다

이렇게 설정하면?

모든 커밋을 가져온다 !!

'서버' 카테고리의 다른 글

Claude code + mcp로 개발일지 작성 자동화하기  (0) 2026.01.19
nestJS 배포 자동화  (3) 2025.06.18
라즈베리파이5에 API 서버 배포하기  (6) 2024.09.21
정소민fan
@정소민fan :: 코딩은 관성이야

코딩은 관성적으로 해야합니다 즐거운 코딩 되세요

목차