programing

당기기 위한 깃 후크가 있습니까?

mytipbox 2023. 6. 27. 23:26
반응형

당기기 위한 깃 후크가 있습니까?

실행할 때마다 프로젝트에 대해 몇 가지 작업(*.mo 메시지 파일 가져오기 준비)을 수행해야 합니다.git pull이 용도로 사용할 수 있는 적당한 깃 후크가 있습니까?

맨 페이지는 후크의 전체 목록입니다.만약 그것이 거기에 없다면, 그것은 존재하지 않습니다.

즉, 병합 후 후크가 있으며 모든 풀에는 병합이 포함되지만 모든 병합이 풀은 아닙니다.병합 후 실행되며 결과에 영향을 미치지 않습니다.충돌이 발생한 경우에는 실행되지 않습니다. 실제로 문제가 발생하면 사후 커밋 후크로 이를 선택하거나 수동으로 호출해야 합니다.

post-merge사용 방법에 대한 자세한 내용은 https://git-scm.com/docs/githooks#_post_merge 을 참조하십시오.

이 접근법은 저에게 효과가 있습니다.

먼저, 이름이 지정된 파일을 추가합니다.post-merge로./path/to/your_project/.git/hooks/

cd /path/to/your_project/.git/hooks/
touch post-merge

그런 다음 소유권을 <your_project> 폴더와 동일하게 변경합니다.nginx그리고.php-fpm주자), 저의 경우, 저는 사용합니다.www:www

sudo chown www:www post-merge

그런 다음 파일 모드를 775로 변경합니다(그러면 실행 가능).

sudo chmod 775 post-merge

그런 다음 아래의 스니펫을 에 넣습니다.post-merge스니펫을 이해하려면 여기를 참조하십시오(실제로 저입니다).

#!/bin/sh

# default owner user
OWNER="www:www"

# changed file permission
PERMISSION="664"

# web repository directory
REPO_DIR="/www/wwwroot/your_project/"

# remote repository
REMOTE_REPO="origin"

# public branch of the remote repository
REMOTE_REPO_BRANCH="master"

cd $REPO_DIR || exit
unset GIT_DIR
files="$(git diff-tree -r --name-only --no-commit-id HEAD@{1} HEAD)"

for file in $files
do
  sudo chown $OWNER $file
  sudo chmod $PERMISSION $file
done

exec git-update-server-info

모든 작업이 완료되었습니다. 이제 _project 폴더로 돌아가십시오.

cd /path/to/your_project/

달려.git pull_project 폴더 아래에서 root 또는 sudo로 실행해야 한다는 것을 기억하십시오(나는 sudo를 기억합니다).

sudo git pull

이제 원격 저장소에서 가져온 새 파일을 확인하고 소유권이 다음으로 변경되었는지 확인합니다.www:www(예상대로라면, 새 풀 파일의 소유권이 다음으로 변경되어야 합니다.www:www).

이 접근 방식은 보다 훨씬 좋습니다.sudo chown -R www:www /www/wwwroot/your_project/새 파일의 소유권만 변경할 뿐 모든 것이 변경되는 것은 아니기 때문입니다!예를 들어, 새 파일 2개를 풀었다고 가정하면 전체 폴더의 소유권을 변경하면 시간과 서버 리소스(CPU 사용량, 메모리 사용량 등)가 더 많이 소요되므로 전혀 필요하지 않습니다.

post-merge가 참에 가장 가깝습니다.post-pull다른 답변이 지적하는 것처럼 후크, 그러나 추가하는 것을 고려합니다.post-checkout변경 사항을 확인하려면 후크를 클릭합니다.

문서에서:

이 후크는 워크 트리를 업데이트한 후 git-checkout 또는 git-switch를 실행할 때 호출됩니다.

따라서 작업 복사본이 변경될 때마다 "작업 중인 작업을 전환"하고 팀의 모든 사용자가 작업을 수행했기 때문에 후크가 실행됩니다.

행동이 다른 실질적인 예는 다음과 같습니다.post-merge병합이 없기 때문에 과거로 다시 이동(커밋 체크아웃)할 때 트리거되지 않습니다.

언급URL : https://stackoverflow.com/questions/4185400/is-there-any-git-hook-for-pull

반응형