2016-06-14 5 views
0

Ich möchte einen Befehl träge auf meinem CI-Server ausführen, wenn und nur wenn es eine Änderung in einem Unterverzeichnis gibt (zwischen den beiden letzten Commits), vorzugsweise mit git diff.Wie führe ich einen Befehl nur aus, wenn ein Unterverzeichnis mit git geändert wird?

+1

Sie haben also ein lokales Git Repo und möchten überprüfen, ob es Änderungen in Ihrem Code gibt (inszeniert oder/und nicht)? Und wenn ja, willst du einen Befehl ausführen? Bitte erläutern Sie die Details. – cb0

Antwort

0

[[ -z "$(git diff --numstat your-sub-folder)" ]] || echo "Changes"

Wird git diff in einer Subshell ausgeführt werden, die Inhalte zu vergleichen in "your-Unterordner" und Echo Änderungen, wenn es irgendwelche Änderungen erkannt.

1

Sie können eine Art Dateisystemwatcher verwenden (wie zum Beispiel inotifywait), um den Trick zu machen.

+0

Sorry, klärte jetzt die Frage. Es ist in einem Offline-Szenario, wo das CI einen Build ausführt, und ich möchte einige Befehle überspringen, wenn sich keine Dateien in einem Unterordner geändert haben. –

+0

Es gibt auch eine Deamon-Variante - 'incrond' /' icrond'. Ich habe 'inotifywait | gemacht während gelesen ... 'Schleife. aber ich (n) crond kann es sehr leicht machen. – anishsane

Verwandte Themen