본문 바로가기

개발관련

git pull 후 특정 작업하기

django 서비스를 운영할 경우 서버에서 소스를 받은 후 수동으로 해주어야 하는 일들이 있다.

 

migrate나 특정 파일의 복사 같은.

그럴경우 깃 훅을 사용하면 쉽게 사용이 가능하다.

 

해당 예제는 서버에서 배포를 위해 깃허브의 소스를 Pull 할 경우 특정 파일을 복사하는 방법에 대해서 설명한다.

 

 

1. 프로젝트 폴더의 .git 폴더로 이동

 

프로젝트 폴더로 이동하면 .git 이라는 폴더가 존재한다. 훅을 사용하기 위해 해당 경로로 이동

 

ce projcet/.git/hook

 

 

2. pull을 받으면 자동으로 실행 될 post-merge 훅 파일을 생성

 

vi project/.git/hook/post-merge

 

#!/bin/sh

rm -rf /home/ubuntu/app/modules

cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules

 

       해당 코드의 실행 순서는 다음과 같다.

       1) rm -rf /home/ubuntu/app/modules

            해당 경로의 기존 modules 폴더를 삭제

       2) cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules

            /home/ubuntu/app/project/static/modules/ 경로에 있는 modules 폴더를 /home/ubuntu/app/modules 경로로 복사




3. post-merge 파일의 권한 변경

 

chmod +x post-merge

 

 

 

 

 

이제 해당 저장소에서 pull을 받으면 위에서 설정한대로 modules 폴더를 업데이트 한다.

 

 

 

 

 

 

! 부록 - 깃훅이 작동하면 로그 남기기

#!/bin/sh


rm -rf /home/ubuntu/app/modules


timestamp=$(date)
echo "Post-merge : $timestamp : remove /home/ubuntu/app/modules"  >> /home/ubuntu/app/git_hook_log.txt



cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules

timestamp=$(date)
echo "Post-merge : $timestamp : Copy /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules" >> /home/ubuntu/app/git_hook_log.txt

 

만일 깃훅 작업을 로그로 보고 싶다면 위와 같이 수정하면 된다. 

그리고 로그 파일 위치에 txt 파일을 생성 하면 끝!