Skip to content

Instantly share code, notes, and snippets.

@hamsterbacke23
Created January 28, 2016 13:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hamsterbacke23/3f4c20bd31d6ea8424b9 to your computer and use it in GitHub Desktop.
Save hamsterbacke23/3f4c20bd31d6ea8424b9 to your computer and use it in GitHub Desktop.
create_update.sh
#!/bin/bash
## Defaults
# BUILDFOLDER="build"
DATEILISTE="files.txt"
DATEILISTEGELOESCHT="deleted.txt"
# Parse bash arguments
while [[ $# > 1 ]]
do
key="$1"
case $key in
-t|--target)
ZIELVERZEICHNIS="$2"
shift # past argument
;;
-s|--startsha)
STARTSHA="$2"
shift # past argument
;;
-e|--endsha)
ENDSHA="$2"
shift # past argument
;;
*)
# unknown option
;;
esac
shift # past argument or value
done
## User input
# printf "Zielverzeichnis (build/****)[PikUndPack]: " ; read -r TARGET
if [ -z "$STARTSHA" ]
then
printf "GIT Start SHA/Tag/Branch[HEAD^]: " ; read -r STARTSHA
fi
if [ -z "$ENDSHA" ]
then
printf "GIT Ende SHA/Tag/Branch[HEAD]: " ; read -r ENDSHA
fi
# defaults
if [ -z ${STARTSHA} ]; then
STARTSHA="HEAD^"
fi
if [ -z ${ENDSHA} ]; then
ENDSHA="HEAD"
fi
# if [ -z ${TARGET} ]; then
# TARGET="PickUndPack_$(date +%Y%m%d)"
# fi
# Zielverzeichnis und Dateiliste erstellen
# Clean up first
if [ -d ${ZIELVERZEICHNIS} ]; then
rm -rf ${ZIELVERZEICHNIS}
fi
mkdir -p ${ZIELVERZEICHNIS}
ZIELDATEILISTE="${ZIELVERZEICHNIS}/${DATEILISTE}"
ZIELDATEILISTEGELOESCHT="${ZIELVERZEICHNIS}/${DATEILISTEGELOESCHT}"
touch ${ZIELDATEILISTE}
touch ${ZIELDATEILISTEGELOESCHT}
echo ""
echo ""
echo "Dateien werden kopiert nach:"
echo "$ZIELVERZEICHNIS"
echo "------"
echo ""
# ==========================================================================
# via GIT Befehl alle neuen/geaednerten Dateien durchlaufen
# ==========================================================================
for i in $(git diff -w --name-only --diff-filter=ACMRTUXB ${STARTSHA}..${ENDSHA}); do
if [ -f $i ]; then
# First create the target directory, if it doesn't exist.
mkdir -p "$ZIELVERZEICHNIS/$(dirname $i)"
# # Then copy over the file.
cp "$i" "$ZIELVERZEICHNIS/$i"
# Name in Dateil aufnehmen
echo $i>>${ZIELDATEILISTE}
fi
done
# ==========================================================================
# via GIT Befehl alle geloeschen Dateien durchlaufen
# und schauen, ob diese geloescht wurden
# ==========================================================================
# git log ${STARTSHA}^..${ENDSHA} --all --pretty=format: --name-only --diff-filter=D | sort -u
for j in $(git log ${STARTSHA}..${ENDSHA} --all --pretty=format: --name-only --diff-filter=D | sort -u); do
# nur in die Liste aufnehmen, wenn Datei tatsaelich nicht existiert
if [ ! -f $j ]; then
echo $j>>${ZIELDATEILISTEGELOESCHT}
fi
done
echo ""
echo "==================================="
echo "FERTIG";
echo "==================================="
echo "Alle Dateien sind nun im Verzeichnis: $ZIELVERZEICHNIS"
echo "------"
echo "Eine Liste aller Dateien sind in der Datei:"
echo " $ZIELDATEILISTE"
echo ""
echo "Man kann nun auf dem Zielsystem alle Dateien sichern mit dem Kommando:"
echo " tar czvf -T $DATEILISTE"
echo "------"
echo "Eine Liste aller gelöschten Dateien sind in der Datei:"
echo " $ZIELDATEILISTEGELOESCHT"
echo ""
echo "Man kann nun auf dem Zielsystem alle Dateien löschen mit dem Kommando:"
echo " xargs rm -r < deleted.txt"
echo "------"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment