2016-08-25 2 views
0

현재 제 젠킨스에 bash 명령 설정이되어 있습니다.이 파일은 내 자식에게 파일을 추가하는 데 도움이됩니다.특정 조건에서 어떤 파일도 압축하지 못하도록하십시오.

내가 한 것은 이전 커밋 이후 변경된 파일을 확인한 다음 해당 파일을 압축하고 디렉토리에서 압축을 풀어 ssh를 통해 내 서버로 옮깁니다. 커밋을 통해 파일을 삭제하지 않는 한 문제없이 작동합니다.

파일을 삭제할 때이 파일을 zip에 추가하려고 시도합니다.이 파일은 더 이상 존재하지 않으므로 오류가 발생합니다 (분명히).

처음 내 명령은 다음과 같이 보았다 :

git archive --output=publish/update.zip HEAD $(git diff --name-only $PREVIOUS $CURRENT)

현재는 다음과 같습니다 --diff-filter=d 검색에서 삭제 된 파일을 제외입니다 무엇을

git archive --output=publish/update.zip HEAD $(git diff --diff-filter=d --name-only $PREVIOUS $CURRENT)

합니다. 나는이 작업을 수행하고 다음과 같이 표시됩니다 내 커밋 archive 명령에 삭제 된 파일 만있을 때 그러나 :

git archive --output=publish/update.zip HEAD

그래서 이눔하기 위해 전체 작업 공간을 일으키는 원인이되는 머리 뒤에 지정된 파일이 없으면 무슨 일입니다 압축하여 서버로 전송합니다. 분명히 이것은 내가 원하는 것이 아닙니다.

아무도 내가이 문제를 해결할 수있는 방법을 알고 있습니까?

내 전체 bash는 명령을 직접

+0

왜 당신이 보내는 파일 (당신이 저지르고 있는지?)하는 대신 수동으로 단지 자식 푸시를 사용하여/풀 :

전체 스크립트는 뭔가를 할 수 있을까? – rubenvb

+0

왜냐하면 나는 서버 측을 만지지 않기를 원하기 때문입니다. 이것은 제가 원하는만큼 많은 사이트와 서버에 적용 할 수있는 솔루션입니다. 공유 호스팅 및 vps를 사용하는 사람들이 있는데, 그렇게하지 않으면 이것이 가장 좋은 방법이라고 느꼈습니다. – NoSixties

답변

0

this 같은 사용 자식 상대 심판 및 우편 명령을 보인다. 각각의 커밋

# Create remove.sh so it removes at least one file - itself 
printf "rm %q\n" remove.sh $(git diff --diff-filter=D --name-only HEAD~1) > remove.sh 
# Create update.zip so it contains at least one file - remove.sh 
zip update.zip remove.sh $(git diff --diff-filter=d --name-only HEAD~1) 
관련 문제