2017-12-11 25 views
0

내가 쓴 스크립트 작동하지 않는 게시물 커밋 .. 그것은 ZIP 파일 만을 만드는 것지퍼로 잠그는 파일 후크 <code>post-commit</code> 후크 커밋 마지막 ZIP하는

#!/bin/sh 

echo "[post-commit] Commit done!" 

exec < /dev/tty 

while true; do 
    read -p "[post-commit] Archive this commit? (Y/n) " yn 
    if [ "$yn" = "" ]; then 
     yn='Y' 
    fi 
    case $yn in 
     [Yy]) exec git archive -o $(git log -1 --pretty=%B).zip $(git rev-parse HEAD) $(git diff --name-only $(git rev-parse HEAD)^..$(git rev-parse HEAD)); break;; 
     [Nn]) exit;; 
     *) echo "Please answer Yy or Nn for yes or no.";; 
    esac 
done 

을 빈을, 그것은 변경된 파일을 저장하지 않는 것 ...
누구나 나쁘다는 것을 알 수 있습니까?

답변

1

내가 볼 때 -o $(git log -1 --pretty=%B).zip에는 보관 파일의 이름을 지정해야합니다. %B은 공백, 줄 바꿈 및 파일 이름에 들어가거나 명령 줄 옵션을 구분할 수없는 많은 이상한 문자가 포함될 수있는 커밋 메시지 본문 텍스트를 인쇄합니다.

당신이 달성하려고하는 것이 확실하지 않으므로 개선 할 제안을 모르겠습니다. 파일명이 인 %f (예 : 제목 줄을 삭제할 수 있음)을 %B 대신 사용할 수 있습니다.

내 추천 - 이상한 일을하지 마세요.

+0

감사합니다. 감사합니다. :) –

+1

@David 또한, 당신은'rev-parse'를 과도하게 사용하고 있습니다. git 명령의 대부분은'HEAD'로 잘 작동합니다. – kan