Git에서 새 분기를 체크 아웃 한 후 후크를 트리거 할 수 있습니까?Git에서 새 분기를 체크 아웃 한 후 후크를 트리거하는 방법이 있습니까?
답변
이 후크 중 하나가 그것을하지 않을 경우 내가
http://schacon.github.com/git/githooks.html
은 어쩌면이 하나 깜짝 놀라게 할 것 :
이이 후 체크 아웃
이 훅이 때 호출되는 a 작업 트리를 업데이트 한 후에 git-checkout을 실행합니다. 결제가 분기 결제 여부를 나타내는 이전 HEAD의 REF (또는 변경되지 않을 수있다) 새로운 HEAD 의 REF, 및 플래그 (변경 지점 : 후크 세 파라미터 주어진다 , 플래그 = 1) 또는 파일 체크 아웃 ( 인덱스에서 파일 검색, 플래그 = 0). 이 훅은 이 git-checkout의 결과에 영향을 줄 수 없습니다.
자식 후크 저장소의 특별한 위치에 배치 스크립트입니다, 그 위치는 다음과 같습니다
.git/후크
스크립트는 모든 종류의 수 있습니다 당신이 할 수있는 bash, python, ruby 등의 환경에서 실행하십시오.
체크 아웃 후 실행되는 후크는 post-checkout입니다. 워드 프로세서에서 :
... 후크는 세 개의 매개 변수 ...
주어집니다
예 :
후크 (스크립트) 만들기 :
을touch .git/hooks/post-checkout chmod u+x .git/hooks/post-checkout
훅 샘플 내용 :
#!/bin/bash
set -e
printf '\npost-checkout hook\n\n'
prevHEAD=$1
newHEAD=$2
checkoutType=$3
[[ $checkoutType == 1 ]] && checkoutType='branch' ||
checkoutType='file' ;
echo 'Checkout type: '$checkoutType
echo ' prev HEAD: '`git name-rev --name-only $prevHEAD`
echo ' new HEAD: '`git name-rev --name-only $newHEAD`
참고 : 첫 번째 줄에있는 오두막은 스크립트의 유형을 나타냅니다.
이 스크립트 (git hook)는 전달 된 세 매개 변수 만 캡처하여 인간 친화적 인 형식으로 인쇄합니다.
는 post-checkout
hook는 세 개의 매개 변수를받습니다
- 참조 이전 HEAD의를 새로운 HEAD의
- 심판이 파일 체크 아웃 (
0
) 또는 지부 체크 아웃 (1
)
현재 머리글에서 생성 된 분기가 매개 변수 1과 2에 대해 동일한 값을 갖게된다는 사실을 사용할 수 있습니다.
cat > .git/hooks/post-checkout <<"EOF"
if [ "$3" == "0" ]; then exit; fi
if [ "$1" == "$2" ]; then
echo "New branch created. (Probably)."
fi
EOF
chmod u+x .git/hooks/post-checkout
제한 :
- 현재 HEAD가 바보 것 같은 머리에 될 일이 기존의 지점을 확인하고 있습니다.
- 현재 분기에서 이 아닌 새 분기 생성이 검색되지 않습니다.
다른 것과 비슷하지만 분기가 한 번 체크 아웃되었는지 확인합니다.
#!/bin/bash
# this is a file checkout – do nothing
if [ "$3" == "0" ]; then exit; fi
BRANCH_NAME=$(git symbolic-ref --short -q HEAD)
NUM_CHECKOUTS=`git reflog --date=local | grep -o ${BRANCH_NAME} | wc -l`
#if the refs of the previous and new heads are the same
#AND the number of checkouts equals one, a new branch has been created
if [ "$1" == "$2" ] && [ ${NUM_CHECKOUTS} -eq 1 ]; then
git push origin ${BRANCH_NAME}
fi
이것은 올바른 길을 찾았습니다. 덕분에 너무 많이! 체크 아웃을 카운트하기 위해 grep reflog를 사용했기 때문에 이전에 브랜치가 있었고 같은 이름의 브랜치가 새로 만들어지면 그 브랜치가 새 것으로 인식되지 않을 것입니다. 그게 원하는 동작이나 문제에 따라 유스 케이스에 따라 다를 수 있지만 나는 그것을 언급했을 것입니다. – Pwnrar
- 1. SharePoint에서 체크 아웃 한 후 문서 열기
- 2. Git에서 분기를 삭제할시기?
- 3. Git에서 분기를 삭제할시기?
- 4. Git에서 분기를 병합하는 대신 덮어 쓸 수 있습니까?
- 5. TFS : 한 서버에서 체크 아웃, 다른 서버로 체크 아웃
- 6. git에서 병합해야하는 분기를 식별하는 방법
- 7. svn에서 프로젝트를 체크 아웃 한 후 작업을 실행 하시겠습니까?
- 8. 파일을 기반으로 한 CVS 체크 아웃
- 9. Git에서 한 파일의 특정 버전을 어떻게 체크 아웃 할 수 있습니까?
- 10. 2checkout에서 체크 아웃 한 후 사이트로 리디렉션 하시겠습니까?
- 11. github에서 특정 분기 체크 아웃
- 12. Git에서 파일을 체크 아웃하는 방법?
- 13. SVN 체크 아웃 후 프로젝트 다시 정렬
- 14. 특정 git 리비전을 체크 아웃하려면 분기를 만들어야합니까?
- 15. 체크 아웃 폴더 체크 아웃 SourceSafe에서 체크 아웃 된 파일에 대한
- 16. viewDidUnload 이벤트를 트리거하는 방법이 있습니까?
- 17. 체크 아웃 내에서 SVN 체크 아웃
- 18. git에서 제거 된 분기를 얻는 방법
- 19. 체크 아웃
- 20. GIT에서 릴리스 분기를 만드는 방법은 무엇입니까?
- 21. 분기를 삭제 한 후 svn 분기 기록을 볼 수 있습니까?
- 22. 충돌없이 git에서 원격 분기를 가져 오려면 어떻게해야합니까?
- 23. CVS에서 체크 인 및 체크 아웃 한 후 Visual C++ 프로젝트에서 빌드 문제
- 24. .svn 디렉토리가없는 svn 체크 아웃 및 업데이트
- 25. git에서 원격 저장소의 원격 지점을 체크 아웃하려면 어떻게해야합니까?
- 26. Git 태그 - 체크 아웃 문제
- 27. PayPal 체크 아웃 통합
- 28. Subversion에 부모 분기를 알리는 방법이 있습니까
- 29. git에서 원격 저장소에 새 분기 만들기
- 30. Git의 하위 디렉토리를 체크 아웃 하시겠습니까?
(새 HEAD의 reflog를 보는 것 외에) 분기 생성 체크 아웃인지 여부를 알 수 있습니까? – pkoch
전혀 새로운 질문을하는 것이 좋습니다. 그렇게한다면 나에게 링크를 보내면 내가 도울 수 있는지 알게 될 것이다. 해결하려는 문제는 무엇입니까? – givanse
커밋이 여러 분기의 맨 위에 있으면'name-rev'는 알파벳순으로 먼저 나오는 이름 만 제공합니다. 따라서 원래 브랜치의 이름 앞에 알파벳순으로 이름이 붙은 브랜치를 체크 아웃 한 후,'prev HEAD' 라인은 NEW 브랜치의 이름을 줄 것이다. 해결 방법 :'thisBranchName = $ (git rev-parse --abbrev-ref HEAD); $ (git branch --color = never - $ 1 | sed -e '/^..//'포함)의 분기 용; [ "$ (git show-ref -s $ branch)"== $ 1] && [ "$ branch"! = "$ thisBranchName"] 인 경우 을 수행하십시오. then parentBranchName = $ branch; 휴식; fi; done' – Ansa211