Created
January 28, 2016 13:19
-
-
Save hamsterbacke23/3f4c20bd31d6ea8424b9 to your computer and use it in GitHub Desktop.
create_update.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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