Sperren Sie vorübergehend ein Git-Repository

8

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!

    
schuess 12.08.2013, 16:30
quelle

3 Antworten

1

Sie sollten das Repository klonen und Ihre Arbeit in der Verzweigung erledigen.
Forks auf der lokalen Festplatte können Symlinks verwenden, um Zeit und Speicherplatz zu sparen.

Git hat keine Vorstellung von einer Sperre.

    
SLaks 12.08.2013 16:42
quelle
1

TL; DR

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.

Shared Repositories mit Semaphoren missbrauchen

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.

    
Todd A. Jacobs 12.08.2013 18:28
quelle
0

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.

    
Tzunghsing David Wong 13.09.2017 17:08
quelle

Tags und Links