Vorübergehend gesperrt, ein git-repository
Weißt du, ob es einen Weg gibt, zu blockieren, zu Begehen, um ein lokales git-repository? In meiner build-Umgebung, ich bin mit einigen git-Befehle durch und es bricht, wenn der Benutzer eine commit-während der build.
Ich würde gerne sperren Sie das repository während der Aufbau im Gange ist, dann entsperren, wenn der build fertig ist.
Dank!
- Bitte verwenden Sie Begriffe wie "commit" genau, während auf git. Mehrere Benutzer müssen sich nicht verpflichten, in der gleichen repository mit git.
- Klonen Sie das repository, und führen Sie eine pull-bevor Ihr zu bauen, und erstellen Sie dann aus diesem repository. Aber versuchen aus erstellen Sie ein repository, dass mehrere Menschen Begehen in scheint zu zeigen, dass Sie nicht wirklich mit git die Art, wie es genutzt werden sollte.
- Ich will block die lokale Benutzer aus zu Begehen (oder, wie jetzt, da ich darüber nachdenke, Check-out auf einen anderen commit) in ein eigenes repository. Ich bin nicht besorgt drückt aus externen Quellen, die nicht automatisch ändern KOPF
- Ich denke, was die anderen Kommentatoren sagen, ist, dass Sie Sie einfach nicht. Es Niederlagen der Zweck von git. Sie die Gabel aus dem 'repository' Sie arbeiten möchten, dann arbeiten Sie auf Ihre Gabel. So können Sie sicher sein, dass es kontrolliert wird.
- Wenn ich clone aus dem Quell-repository und trennen Sie Sie dann von meinem laptop aus dem Netzwerk, und führen Sie aus einer Höhle, die ich Begehen kann, ohne dass Sie selbst wissen. Wie (oder noch wichtiger, warum) würden Sie wollen, um die "Sperre" für mich zu tun, dass?
- meinst du drücken begeht, um ein repo, nicht Begehen Sie? Dies sind zwei sehr verschiedene Dinge in Git. Die Begehung erfolgt nur in eine lokale repository aus. Benutzer drücken begeht, auf eine Fernbedienung repo.
- Er sagt, dass ein lokales repo, also warum kann er nicht einfach ein .git/index.lock-Datei? Ich denke, andere Benutzer bekommen würde, dieser Fehler. Ich sage nicht, es ist eine gute Idee, mehr wie ein "goto". Plus er würde Sie sperren sich selbst aus, wie gut die möglicherweise nicht die Absicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TL;DR
Nicht ein Git-kompatibel-work-flow. Wenn Sie möchten, eine SCM mit Verriegelung, verwenden Sie etwas anderes mit ein zentralisiertes repository-Modell. Einige SCMs unterstützen optionale Schlösser gehören SVN, CVS und RCS.
Nicht Push-to-Non-Bare Repositories
Es sei denn, Sie sind mit einem gemeinsam genutzten repository konfiguriert mit core.sharedRepository aktiviert ist, sollten Sie darauf drängen, um ein bare-repository und ausführen von continuous integration oder build-Systeme aus einem nicht-bare-clone. Per definition ist jede gemeinsam genutzte repository kann das Arbeitsverzeichnis geändert von jeder mit den notwendigen Berechtigungen, so sollten Sie nicht verwenden eines gemeinsamen Repositorys, wenn Sie brauchen, um eine stabile Arbeitsverzeichnis während der Lebensdauer einiger Prozess.
Gibt es sicherlich einige Anwendungsfälle für das gemeinsam genutzte repository-Modell. Allerdings, dir ist nicht einer von Ihnen.
Missbrauchen Shared Repositories mit Semaphoren
Können Sie sicher gestalten Sie Ihre eigenen Skripts, um den Missbrauch des shared-repository-Modell. Zum Beispiel könnten Sie verwenden semaphore-Dateien (wie die, die erstellt von Sperrdatei aus der lockfile-progs - Paket) oder Herde in ein wrapper-Skript, das schaltet sich aus, schreiben oder ausführen von Berechtigungen auf dem freigegebenen Verzeichnis vor dem Anpfiff einige lang laufende build-Prozess. Das ist viel Arbeit für einen sehr kleinen pay-off, da könnte man das gleiche nutzen mit weniger Arbeit mit einem Klon. Jedoch, es ist technisch machbar, so erwähne ich es hier der Vollständigkeit halber aufgeführt.
Schauen .git/hooks/pre-commit.Probe. Durch die Manipulation dieses Haken ist, sollten Sie in der Lage sein zu deaktivieren commit-operation auf remote-oder lokalen git-repository.
Sollten Sie Klonen Sie das repository, und führen Sie Ihre Arbeit in der Gabel.
Gabeln auf der lokalen Festplatte können symlinks benutzen, um Zeit zu sparen und Raum.
Git hat keine Vorstellung von einer Sperre.