Ich schreibe ein Skript, um Dinge wie git status
in jedem der Unterverzeichnisse des aktuellen Verzeichnisses zu laufen, so kann ich schnell Informationen über mehrere Git-Repos erhalten. Ich möchte jedoch alle Befehle verhindern, die die Repos modifizieren. Ich würde nicht zehn Repos gleichzeitig machen wollen. Ich kann nicht einfach eine Whitelist von git-Unterbefehlen verwenden, weil ich vielleicht git branch -a
ausführen möchte, um die Verzweigungen in jedem Repo zu sehen, aber nicht git branch new-branch-name
, um in jedem Repo eine neue Verzweigung zu erstellen.Gibt es eine Möglichkeit, git im schreibgeschützten Modus auszuführen?
Gibt es also eine Möglichkeit, git so zu starten, dass es abbricht, anstatt irgendwelche Änderungen am Repo vorzunehmen, aber gut funktioniert, wenn schreibgeschützte Befehle ausgeführt werden?
Edit: Was ich tun möchte, ist ein git-Unterbefehl Befehl, der so funktioniert: Wenn ich git subdirs COMMAND ARGS
tippe, möchte ich etwas wie for dir in */; do cd $dir && git COMMAND ARGS && cd ..; done
(nur mit zusätzlicher Fehlerprüfung) tun. Außer, wenn git COMMAND ARGS
den Repo in irgendeiner Weise modifizieren würde, möchte ich es nicht tun, weil es äußerst unwahrscheinlich ist, dass ich dieselbe Änderung an vielen verschiedenen Repos vornehmen möchte.
Möchten Sie holen verhindern wollen? Ich kann sehen, dass dies ein sehr verbreiteter Anwendungsfall für ein Skript wie dieses ist, und Sie können sich vorstellen, dass es das Repo nicht modifiziert, aber das tut es definitiv. – Cascabel
Nun, ich könnte immer noch eine Whitelist für Befehle wie fetch oder push implementieren, die nicht-destruktiv ändern, aber es wäre schön, mit einer Basisimplementierung zu beginnen, die nicht die Kapazität hat, 10 Repos versehentlich mit einem einzigen falsch eingegebenen Befehl zu brechen. –
Tatsächlich kann Push mit '-f' destruktiv sein, also ist es wie in deinem' git branch' Beispiel. – MatrixFrog