사용자가 작성한 모든 태그를 검증하여 필요에 따라 이름을 변경하여 규칙을 충족 시키길 원합니다.
예를 들어 사용자가 "v1.2.3"
태그를 만든 경우 자동으로 "v1.02.03"
으로 이름이 변경되어야합니다.git hook을 사용하여 태그의 이름을 자동으로 바꾸는 방법은 무엇입니까?
불행히도 git tag
명령에 의해 호출되는 git hook이 존재하지 않습니다.
그런 이유로 나는 pre-push
후크를 구현했는데, 이는 이전 태그를 삭제하고 같은 커밋에서 새 태그를 수정 한 이름으로 만듭니다.
git push --tags
은 이전 태그가 프리 푸시 후크를 삭제 한 후에 더 이상 존재하지 않지만 NEW TAGS 대신 원격 태그로 OLD TAGS를 보냅니다.
태그를 원격 repo로 푸시하기 전에 자동으로 로컬 repo에서 이름을 바꾸는 방법은 무엇입니까?
편집 :
나는 서버 측에서 post-receive
후크에 태그 이름 변경 로직을 복제하여 내 문제를 해결했다.
pre-push
후크로 태그 "v1.2.3"이 클라이언트 측에서 "v1.02.03"으로 이름이 바뀌 었으나 이전 태그 이름 ("v1.2.3")이 원격 repo로 푸시되고 원격 repo " post-receive
후크로 "v1.2.3"이 다시 "v1.02.03"으로 이름이 변경됩니다. 이제 클라이언트와 서버 모두 태그의 이름이 변경되었습니다.
나는 내 솔루션에 만족하지 않는다고 말할까요?
순수 클라이언트 측 솔루션은 여전히 환영 받고 있습니다.
태그가 제대로 삭제되지 않은 것 같습니다. 프리 푸시 후크 코드를 여기에서 공유 할 수 있습니까? –
@mu - 태그가 제대로 삭제되었으므로 후크로 인쇄 된 성공적인 작업에 대한 메시지가 표시됩니다. 내 코드는 다음 줄을 포함합니다 :'os.execute ('git tag -d "'..tagname .. '"&& git tag "'..new_tag_name .. '"..commit ..'&& echo TAG RENAMED | | 에코 이름 바꾸기가 실패했습니다 ')'. 그리고'git push --tags'가 완료된 후에 실제로 그것들이 삭제 된 것을 봅니다. –