이전 포스팅에서 이어진다
개발일지 자동화는 했는데...
문제가 하나 있었다
내가 작성한 모든 커밋을 개발일지에 추가하고 싶었지만, 그럴수가 없었다는 것
왜냐하면 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 |