Neu nach Konsultation von chatGPT
This commit is contained in:
33
pre-commit
Normal file → Executable file
33
pre-commit
Normal file → Executable file
@ -1,25 +1,18 @@
|
||||
#!/bin/bash
|
||||
LOGFILE="archiv.log"
|
||||
|
||||
ARCHIVE_DIR="Archiv"
|
||||
log() {
|
||||
local TIMESTAMP
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
echo "[$TIMESTAMP] $1" >> "$LOGFILE"
|
||||
}
|
||||
|
||||
git diff --cached --name-only | while read FILE
|
||||
do
|
||||
if [[ "$FILE" =~ ^"$ARCHIVE_DIR"/ ]]; then
|
||||
if git rev-parse --verify --quiet HEAD:"$FILE" > /dev/null; then
|
||||
echo ""
|
||||
echo "----------------------------------------------------------------------"
|
||||
echo "FEHLER: Die Datei '$FILE' existiert bereits im Git-Archiv."
|
||||
echo "Es ist nicht erlaubt, vorhandene Dateien im '$ARCHIVE_DIR/'-Verzeichnis zu ändern oder neu hinzuzufügen."
|
||||
echo "Die Änderungen an '$FILE' werden nun verworfen."
|
||||
echo "----------------------------------------------------------------------"
|
||||
echo ""
|
||||
# Überprüfe auf Löschungen oder Modifikationen in Archiv
|
||||
problem=$(git diff --cached --name-status | grep -E '^[MD]\s+Archiv/' || true)
|
||||
|
||||
git restore --staged "$FILE"
|
||||
git restore "$FILE"
|
||||
if [[ -n "$problem" ]]; then
|
||||
log "⛔️ Commit blockiert: Änderung oder Löschung in Archiv: $problem"
|
||||
echo "⛔️ Fehler: Dateien im Archiv dürfen nicht gelöscht oder verändert werden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user