Version 2 von autogit push: Unterschied zwischen den Versionen
Erscheinungsbild
Saya (Diskussion | Beiträge) Die Seite wurde neu angelegt: „#!/bin/bash cd "$(dirname "$0")" FILES=( "docker-compose.yml" "homepage/config/settings.yaml" "homepage/config/services.yaml" ) while true; do inotifywait -e close_write "${FILES[@]}" git add "${FILES[@]}" if ! git diff --cached --quiet; then git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')" git push origin main fi done“ |
Saya (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
= Auto-Git-Push mit inotifywait und systemd = | |||
Diese Seite beschreibt, wie du Änderungen an bestimmten Dateien automatisch per Git pushen kannst. | |||
== 1. Bash-Script erstellen == | |||
Speichere folgendes Script z. B. als '''auto-git-push.sh''': | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/bash | #!/bin/bash | ||
# Zum Verzeichnis des Scripts wechseln | |||
cd "$(dirname "$0")" | cd "$(dirname "$0")" | ||
# Zu überwachende Dateien | |||
FILES=( | FILES=( | ||
"docker-compose.yml" | "docker-compose.yml" | ||
| Zeile 9: | Zeile 20: | ||
) | ) | ||
# Endlosschleife zur Überwachung | |||
while true; do | while true; do | ||
# Warten auf Änderungen an den Dateien | |||
inotifywait -e close_write "${FILES[@]}" | inotifywait -e close_write "${FILES[@]}" | ||
# Dateien zum Git-Index hinzufügen | |||
git add "${FILES[@]}" | git add "${FILES[@]}" | ||
# Prüfen, ob Änderungen vorliegen | |||
if ! git diff --cached --quiet; then | if ! git diff --cached --quiet; then | ||
# Commit erstellen und pushen | |||
git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')" | git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')" | ||
git push origin main | git push origin main | ||
fi | fi | ||
done | done | ||
</syntaxhighlight> | |||
== 2. Script ausführbar machen == | |||
<syntaxhighlight lang="bash"> | |||
chmod +x auto-git-push.sh | |||
</syntaxhighlight> | |||
== 3. systemd-Service erstellen == | |||
Falls du mehrere Services nutzt, z. B. '''auto-git-push@homepage.service''', achte darauf, dass du den richtigen Service neu startest: | |||
<syntaxhighlight lang="bash"> | |||
sudo systemctl restart auto-git-push@homepage.service | |||
</syntaxhighlight> | |||
Dies: | |||
* Stoppt den alten Prozess | |||
* Startet den neuen Service mit der aktualisierten Script-Version | |||
== 4. Prüfen, ob alles läuft == | |||
'''Service-Status prüfen:''' | |||
<syntaxhighlight lang="bash"> | |||
systemctl status auto-git-push@homepage.service | |||
</syntaxhighlight> | |||
'''Live-Logs beobachten:''' | |||
<syntaxhighlight lang="bash"> | |||
journalctl -u auto-git-push@homepage.service -f | |||
</syntaxhighlight> | |||
Wenn du jetzt eine der überwachten Dateien änderst (z. B. settings.yaml), sollte: | |||
* inotifywait die Änderung erkennen | |||
* Das Script automatisch committen und pushen | |||
== 5. Checkliste == | |||
* ✅ Script gespeichert | |||
* ✅ Script ausführbar gemacht | |||
* ✅ systemd-Service neu gestartet | |||
* ✅ Logs überprüft | |||
Aktuelle Version vom 13. Februar 2026, 14:40 Uhr
Auto-Git-Push mit inotifywait und systemd
Diese Seite beschreibt, wie du Änderungen an bestimmten Dateien automatisch per Git pushen kannst.
1. Bash-Script erstellen
Speichere folgendes Script z. B. als auto-git-push.sh:
#!/bin/bash
# Zum Verzeichnis des Scripts wechseln
cd "$(dirname "$0")"
# Zu überwachende Dateien
FILES=(
"docker-compose.yml"
"homepage/config/settings.yaml"
"homepage/config/services.yaml"
)
# Endlosschleife zur Überwachung
while true; do
# Warten auf Änderungen an den Dateien
inotifywait -e close_write "${FILES[@]}"
# Dateien zum Git-Index hinzufügen
git add "${FILES[@]}"
# Prüfen, ob Änderungen vorliegen
if ! git diff --cached --quiet; then
# Commit erstellen und pushen
git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main
fi
done
2. Script ausführbar machen
chmod +x auto-git-push.sh
3. systemd-Service erstellen
Falls du mehrere Services nutzt, z. B. auto-git-push@homepage.service, achte darauf, dass du den richtigen Service neu startest:
sudo systemctl restart auto-git-push@homepage.service
Dies:
- Stoppt den alten Prozess
- Startet den neuen Service mit der aktualisierten Script-Version
4. Prüfen, ob alles läuft
Service-Status prüfen:
systemctl status auto-git-push@homepage.service
Live-Logs beobachten:
journalctl -u auto-git-push@homepage.service -f
Wenn du jetzt eine der überwachten Dateien änderst (z. B. settings.yaml), sollte:
- inotifywait die Änderung erkennen
- Das Script automatisch committen und pushen
5. Checkliste
- ✅ Script gespeichert
- ✅ Script ausführbar gemacht
- ✅ systemd-Service neu gestartet
- ✅ Logs überprüft