git-sync: ein Aufruf statt mehrerer Nachfragen (all-Modus + allow-Regel)

This commit is contained in:
marcus hinz
2026-06-20 13:24:03 +02:00
parent 9055ba7775
commit de7f461aaf
3 changed files with 79 additions and 83 deletions
+7 -18
View File
@@ -2,23 +2,12 @@
description: Commit + Push aller persistent konfigurierten Projekt-Repos
---
Du committest und pushst die persistent hinterlegten Projekt-Verzeichnisse
(`permissions.additionalDirectories` aus den Settings) — nicht das CWD.
Führe genau dieses eine Kommando aus, sonst nichts:
1. Verzeichnisse sammeln (Projekt-, lokale, User-Settings, dedupliziert):
```bash
for f in .claude/settings.json .claude/settings.local.json "$HOME/.claude/settings.json"; do
[ -f "$f" ] && jq -r '.permissions.additionalDirectories[]?' "$f" 2>/dev/null
done | sort -u | sed "s|^~/|$HOME/|"
```
2. Für jedes Verzeichnis, das ein Git-Repo ist: aus `git -C <dir> status` und
`git -C <dir> diff --staged --stat` plus `git -C <dir> diff --stat` eine knappe,
sachliche einzeilige Commit-Message auf Deutsch erzeugen (beschreibt, was geändert wurde).
3. Pro Verzeichnis aufrufen:
```bash
"$HOME/claude-projects/global/bin/git-sync" "<dir>" "<message>"
```
4. Ergebnisse pro Repo zusammenfassen: committed / gepusht / nichts zu tun / abgelehnt.
```bash
~/claude-projects/global/bin/git-sync
```
Verändere nichts außerhalb dieser Verzeichnisse. Kein force, kein merge — das Skript
ist darauf ausgelegt und meldet Konflikte nur, statt sie aufzulösen.
Das Skript liest selbst die `permissions.additionalDirectories` aus den Settings und
synct jedes Repo (add, commit mit Timestamp-Message, pull --rebase, push). Kein force,
kein Merge. Gib anschließend die Ausgabe des Skripts wieder.