2011-08-31 4 views
3

특정 분기에서 병합 할 때만 실행되는 post-merge hook 스크립트를 만들려고합니다. 특정 커밋의 분기 변경 이름을 어떻게 확인할 수 있습니까?Git post-merge hook, merged branch의 이름을 얻는 방법

그것은 어느 지점에있을 필요가 없습니다, 사실 -

if $from_specific_branch == 1 then 

git diff --name-status [email protected]{1} HEAD "some_folder" | 
    while read st file; do 
     #skip deleted 
     if [ "$st" == 'D' ]; then continue; fi 

     # .. do something with those files 
    end 

답변

2

첫째, 당신이 어떤 현재로 커밋 병합 커밋 할 수 있음을 주목할 필요가있다.

병합을 만들 때 병합 할 때 첫 번째 부모 (HEAD^1)가 항상있는 지점이라고 생각합니다. 따라서 HEAD^2 (옥토퍼 병합의 경우 HEAD^3, HEAD^4)을보고 특정 분기에 있는지 테스트 할 수 있습니다.

foo 지점에 HEAD^2이 있는지 테스트하려면 git merge-base HEAD^2 foogit rev-parse --verify HEAD^2과 같은지 테스트 할 수 있습니다.

+0

마지막 부분에'git rev-parse'를 사용했다고 생각합니다 ... – johnny

+0

Oosp. 고마워, 조니, 지금 고쳐. –

0

글쎄, git branch --contains <commit>을 사용하여 모든 가지를 나열 할 수 있습니다. 확실하지 그 당신은 단지 $ GIT_REFLOG_ACTION을 사용할 수 있습니다

0

... 당신이 그것을 커밋 포함 어떤 가지를 나열합니다으로 원하지만, 당신이 트릭을 할 수도, 새 커밋에 병합하고 추정 정확히 수행 너의 후크에. 병합 some_branch_name과 같은 텍스트를 포함하거나 원점 some_branch_name을 끌어 당깁니다.