gitpull.sh 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/bash
  2. for EXE in git dirname; do
  3. if [ ! -x "$(which $EXE 2>/dev/null)" ]; then
  4. echo "Die Datei $EXE konnte nicht gefunden werden";
  5. exit 1;
  6. fi
  7. done
  8. if [ "$1" == "" ]; then
  9. echo "Syntax: $0 [Verzeichnis]";
  10. exit 1;
  11. else if [ "${1:0:1}" != "/" ]; then
  12. echo "Das Verzeichnis $1 muss zur Sicherheit als absoluter Pfad angegeben werden.";
  13. exit 1;
  14. else if [ ! -d "$1" ]; then
  15. echo "Das Verzeichnis $1 konnte nicht gefunden werden.";
  16. exit 1;
  17. else if [ ! -d "$1/.git" ]; then
  18. echo "Das Verzeichnis $1 beherbergt kein GIT-Repositorium";
  19. exit 1;
  20. fi fi fi fi
  21. DIR=$(/usr/bin/dirname "$1/x");
  22. cd $DIR; rm -f $DIR/GIT-ERROR.txt;
  23. OUT=$(/usr/bin/git --git-dir=$DIR/.git pull 2>&1); RES=$?;
  24. if [ "$RES" != 0 ]; then
  25. echo "$OUT" > $DIR/GIT-ERROR.txt;
  26. echo "$OUT" | mail -s "Fehler beim GIT-PULL im Verzeichnis $DIR" root;
  27. echo -e "Fehler beim GIT-PULL im Verzeichnis $DIR:\n\n$OUT";
  28. exit $RES;
  29. else
  30. echo -e "GIT-PULL im Verzeichnis $DIR erfolgreich:\n\n$OUT";
  31. if [ -x "$DIR/.gitpull.hook" ]; then
  32. echo "$OUT" | grep "Already up-to-date" >/dev/null;
  33. $DIR/.gitpull.hook $?; RES=$?;
  34. fi
  35. exit $RES;
  36. fi