자식 푸시 후 로컬 실행 후크?
githooks 맨 페이지를 살펴 보았지만 뭔가 누락되지 않는 한 로컬 포스트 푸시 git 후크에 대한 옵션이 표시되지 않습니다. 마스터 브랜치를 GitHub 리포지토리로 푸시 한 후 웹 서버 (이미 스크립트가있는)에서 API 문서를 업데이트하는 파일을 갖고 싶습니다. 물론 git push와 api 문서 실행을 결합하는 스크립트를 직접 작성할 수 있지만 다소 우아하지 않은 느낌이 듭니다.
Git 1.8.2부터 푸시 작업 전에 호출되는 새로운 후크가 있습니다. pre-push 스크립트가 0이 아닌 다른 값을 반환하면 푸시 작업이 취소됩니다.
릴리스 정보에 언급 : https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt#L167
이 문제에 대한 또 다른 해결책 은 호출 전후에 git push
실행 .git/hooks/pre-push
및 .git/hooks/post-push
스크립트에 대한 래퍼를 갖는 것 git push
입니다. 가능한 래퍼는 다음과 같습니다.
#!/bin/sh
GIT_DIR_="$(git rev-parse --git-dir)"
BRANCH="$(git rev-parse --symbolic --abbrev-ref $(git symbolic-ref HEAD))"
PRE_PUSH="$GIT_DIR_/hooks/pre-push"
POST_PUSH="$GIT_DIR_/hooks/post-push"
test -x "$PRE_PUSH" &&
exec "$PRE_PUSH" "$BRANCH" "$@"
git push "$@"
test $? -eq 0 && test -x "$POST_PUSH" &&
exec "$POST_PUSH" "$BRANCH" "$@"
에서 git-push-wh
어딘가에 저장 PATH
한 다음 git push-wh
후크를 사용하여 푸시하려는 것처럼 호출 할 수 있습니다 .
이 유형의 후크는 Git에서 지원되지 않습니다. Git의 유지 관리자가 제공 한 Git 후크 의 유효한 이유를 벗어납니다 .
위 링크 된 메시지의 소개 내용은 귀하의 경우에 거의 직접적으로 나타납니다.
저는 작업이 로컬에서 시작되고 로컬 데이터에서만 작동하는 후크를 특히 좋아하지 않습니다. 다른 사람들보다 더 높은 수준의 스크립팅에 적합한 git 도구 빌딩 블록을 여전히 고려하기 때문일 수 있습니다.
PS A "싱글 푸시"힌트
- 전체 설명에 대한주의 사항이 너무 많지만 모든 것을 이해할 수 있다면 세부 사항을 다룰 수 있어야합니다.
pushurl
"대체"객체 저장소가있는 로컬 리포지토리에 추가 하면 로컬에서 푸시 후크를 실행하는 오버 헤드를 줄일 수 있습니다. 그러나 실제로 노력은 그 이상입니다 git push upstream && update-web-server
(쉘 별칭, git 별칭 또는 스크립트 일 수 있음).
나는 최근에 같은 문제를 만났습니다. 내 자식 하위 모듈의 푸시가 '수퍼 프로젝트'의 새 하위 모듈 참조를 커밋 할 수 있도록 후크를 원했습니다.
Chris가 언급했듯이 가장 좋은 방법은 다음과 같이 git 별칭을 사용하는 것입니다.
$ git config alias.xpush '!git push $1 $2 && update-server.sh'
# (remember the backslash before the ! if your shell requires it)
그러면 .git / config 파일에 다음이 추가됩니다.
[alias]
xpush = !git push $1 $2 && update-server.sh
이제 다음을 입력하면 :
$ git xpush
변경 사항이 푸시되고 update-server.sh가 실행됩니다.
이 기능을 사용하고 있습니다.
current_branch() {
local ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo ${ref#refs/heads/}
}
gp() {
local post_push="$(git rev-parse --git-dir)/hooks/post-push"
git push "$@" && {
[[ -x "$post_push" ]] && "$post_push" "$(current_branch)" "$@"
}
}
compdef _git gp=git-push
compdef 부분은 ZSH 용입니다.
참고 URL : https://stackoverflow.com/questions/1797074/local-executing-hook-after-a-git-push
'developer tip' 카테고리의 다른 글
React Native-동적 이름을 사용하는 이미지 요구 모듈 (0) | 2020.11.27 |
---|---|
Numpy의 0d 배열이 스칼라로 간주되지 않는 이유는 무엇입니까? (0) | 2020.11.27 |
여러 목록에 포함 된 모든 값의 합집합을 만드는 Pythonic 방법 (0) | 2020.11.27 |
document.write의 대안은 무엇입니까? (0) | 2020.11.27 |
PHP stdObject에서 첫 번째 요소 가져 오기 (0) | 2020.11.26 |