prepare-commit-msg병합 커밋에 작동 하는 후크를 만들려고했습니다 . 스크립트는 다음 인수를 전달됩니다 .git/MERGE_MSG, merge.
병합 된 커밋의 해시 또는 분기 이름을 가져와야합니다 (일반적인 비 문어 병합의 경우). git rev-parse MERGE_HEAD해시 name-rev --name-only MERGE_HEAD를 얻거나 분기 이름 (있는 경우) 을 얻는 방법 을 알고 있습니다 .
그러나 prepare-commit-msgMERGE_HEAD를 만들기 전에 호출 된 것 같습니다 . 자동 생성 된 메시지를 구문 분석하는 데 실패한 커밋이 무엇인지 알 수있는 다른 방법이 있습니까?
git 2.4.0을 사용하고 있습니다.
그렇습니다.“자동 생성 된 메시지를 파싱”한다는 의미입니다. 다소 해킹적이고 오류가있는 솔루션 인 것 같습니다.
—
Raphael Schweikert 2016 년
나는 그것이 얼마나 해키인지 모르겠지만,이 후크의 목적은이 파일을 사용자 정의하는 것입니다.
—
harrymc
사용자가 현지화되지 않은 버전의 git을 사용하여“Merge branch x를 y로 병합”이라는 문장의 영어가 아닌 변형을 생성하므로 분기 이름과 패턴 일치 할 수 없으므로 모든 유효한 과정을 거쳐야합니다. 자동 생성 메시지에서 분기 이름 (아마도 모든 단어 일 수 있음)을 확인하고 해당 분기가 실제로 존재하고 HEAD와 일치하지 않는지 확인하십시오. 이로 인해 오 탐지가 발생할 수도 있습니다.
—
Raphael Schweikert 2016 년
를 통해 지점 이름을 가져올 수
—
harrymc 2016 년
NAME=$(git branch | grep '*' | sed 's/* //') 있지만이 기간 동안이 이름 이 존재하는지 모르겠습니다 prepare-commit-msg. commit-msg후크에 적합합니다 . 또 하나 : git symbolic-ref --short HEAD.
.git/MERGE_MSG커밋 메시지를 보유한 파일의 내용을 살펴 보셨습니까 ?