Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  pre-commit   Sprache: unbekannt

 
#!/bin/sh

# configure automatically sets up a wrapper at .git/hooks/pre-commit
# which calls this script (if it exists).

set -e

dev/tools/check-overlays.sh

log=$(mktemp "git-fix-ws-log.XXXXXX")
exec > "$log"

1>&2 echo "Auto fixing whitespace issues ($log)..."

# We fix whitespace in the index and in the working tree
# separately to preserve non-added changes.
index=$(mktemp "git-fix-ws-index.XXXXXX")
fixed_index=$(mktemp "git-fix-ws-index-fixed.XXXXXX")
tree=$(mktemp "git-fix-ws-tree.XXXXXX")
echo "Patches are saved in '$index', '$fixed_index' and '$tree'."
echo "If an error destroys your changes you can recover using them."
echo "(The files are cleaned up on success.)"
echo #newline

git diff-index -p --binary --cached HEAD > "$index"
git diff-index -p --binary HEAD > "$tree"

# reset work tree and index
# NB: untracked files which were not added are untouched
if [ -s "$index" ]; then git apply --whitespace=nowarn --cached -R "$index"; fi
if [ -s "$tree" ]; then git apply --whitespace=nowarn -R "$tree"; fi

# Fix index
# For end of file newlines we must go through the worktree
if [ -s "$index" ]; then
    echo "Fixing staged changes..."
    git apply --cached --whitespace=fix "$index"
    git apply --whitespace=fix "$index" 2>/dev/null # no need to repeat yourself
    git diff --cached --name-only -z | xargs -0 dev/tools/check-eof-newline.sh --fix
    git add -u
    echo #newline
fi

# reset work tree
git diff-index -p --binary --cached HEAD > "$fixed_index"
# If all changes were bad whitespace changes the patch is empty
# making git fail. Don't fail now: we fix the worktree first.
if [ -s "$fixed_index" ]; then git apply --whitespace=nowarn -R "$fixed_index"; fi

# Fix worktree
if [ -s "$tree" ]; then
    echo "Fixing unstaged changes..."
    git apply --whitespace=fix "$tree"
    git diff --name-only -z | xargs -0 dev/tools/check-eof-newline.sh --fix
    echo #newline
fi

if [ -s "$index" ] && ! [ -s "$fixed_index" ]; then
    echo "Fixing whitespace issues cancelled all changes."
    exit 1
fi

# Check that we did fix whitespace
if ! git diff-index --check --cached HEAD; then
    echo "Auto-fixing whitespace failed: errors remain."
    echo "This may fix itself if you try again."
    echo "(Consider whether the number of errors decreases after each run.)"
    exit 1
fi
echo "Whitespace pass complete."

# clean up temporary files
rm "$index" "$tree" "$fixed_index" "$log"

[ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge