Weißt du, ob es eine Möglichkeit gibt, die Übertragung an ein lokales Git-Repository zu blockieren? In meiner Build-Umgebung führe ich einige Git-Befehle durch und es bricht ab, wenn der Benutzer während des Builds einen Commit ausführt.
Ich möchte das Repository während des Buildvorgangs sperren und dann entsperren, wenn der Build abgeschlossen ist.
Danke!
Das ist kein Git-kompatibler Workflow. Wenn Sie einen SCM mit Sperren verwenden möchten, verwenden Sie etwas anderes mit einem Modell mit zentralem Repository. Einige SCMs, die optionale Sperren unterstützen, umfassen SVN , Nicht in nicht bare-Repositories verschieben
Es sei denn, Sie verwenden ein gemeinsam genutztes Repository, das mit core.sharedRepository aktiviert, sollten Sie zu einem leeren Repository wechseln und eine kontinuierliche Integration ausführen oder Systeme von einem nicht-baren Klon erstellen. Definitionsgemäß kann in einem gemeinsam genutzten Repository das Arbeitsverzeichnis von jedem Benutzer mit den erforderlichen Berechtigungen geändert werden. Daher sollten Sie kein gemeinsam genutztes Repository verwenden, wenn Sie während der Laufzeit eines Prozesses ein stabiles Arbeitsverzeichnis sicherstellen müssen.
Es gibt sicherlich einige Anwendungsfälle für das gemeinsame Repository-Modell. Dein gehört jedoch nicht dazu.
Sie könnten sicherlich Ihre eigenen Skripts entwerfen, um das Shared-Repository-Modell zu missbrauchen. Sie können beispielsweise Semaphor-Dateien (z. B. solche, die von lockfile aus dem Paket lockfile-progs erstellt wurden) oder flock in einem Wrapper-Skript verwenden deaktiviert Schreib- oder Ausführungsberechtigungen für Ihr freigegebenes Verzeichnis, bevor Sie einen lang andauernden Build-Prozess starten. Das ist eine Menge Arbeit für einen sehr kleinen Pay-off, da Sie den gleichen Vorteil mit weniger Arbeit mit einem Klon erhalten können. Allerdings ist es technisch machbar, daher erwähne ich es hier zur Vollständigkeit.
Schauen Sie in .git / hooks / pre-commit.sample. Wenn Sie diesen Hook manipulieren, sollten Sie in der Lage sein, den Commit-Vorgang auf dem entfernten oder lokalen Git-Repository zu deaktivieren.
Tags und Links git