2017-12-11 3 views
0

Ich habe geschrieben Skript zuletzt ZIP auf post-commit Haken begehen:Zippen von Dateien in einem post-commit Haken nicht funktioniert

#!/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 

Es ist eine ZIP-Datei erstellt, aber .. leer, es ist die Speicherung nicht geänderten Dateien ...
Wer sieht wo schlecht ist?

Antwort

1

Wie ich sehe, sollte die -o $(git log -1 --pretty=%B).zip einen Namen des Archivs angeben. Die %B druckt Sie einen Nachrichtentext Nachricht senden, die Leerzeichen, neue Zeilen und viele andere seltsame Zeichen, die nicht in einen Dateinamen und brechen Sie die Befehlszeilenoptionen haben könnte.

Nicht sicher, was Sie versuchen zu erreichen, also weiß ich nicht, was ich vorschlagen soll, um es zu verbessern. Wahrscheinlich könnten Sie anstelle %B%f (d. H. sanierte Betreffzeile, passend für einen Dateinamen) verwenden.

Mein bester Vorschlag - tun Sie einfach nicht so komische Dinge;)

+0

Jetzt ist alles gut, danke! :) –

+1

@David Außerdem verwenden Sie 'rev-parse'. Die meisten Git Befehle funktionieren gut mit 'HEAD'. – kan

Verwandte Themen