Dies hängt etwas mit dieser Frage zusammen , ist aber eine andere Frage.
Wir haben ein zentrales Hg-Repository, das den Benutzern über SSH und Quecksilberserver zur Verfügung steht . Wir haben eine Reihe von Mac-, Linux- und Windows-Clients, die eine Verbindung herstellen.
Es ist nun zweimal vorgekommen, dass einer der Windows-Benutzer sein Repository beschädigt und dann auf das zentrale Repository zurückgeschoben hat, das es beschädigt hat. Ich möchte ein eingehendes Hook-Skript in das zentrale Repository schreiben, um zu verhindern, dass eine Transaktion akzeptiert wird, wenn dadurch das zentrale Repository beschädigt wird.
Obwohl ich leider nicht genug über Mercurial weiß, um ein solches Skript zu schreiben. Gibt es eine Möglichkeit, dass jemand anderes darauf gestoßen ist? Persönlich bin ich mir nicht ganz sicher, warum hg dies nicht standardmäßig tut.
quelle
Antworten:
Neuere Versionen von Mercurial (seit 1.5) unterstützen die Validierung eingehender Daten. Hinzufügen
in der hg config Ihres Servers (entweder
.hg/hgrc
oder die hgwebdir config sollte gut funktionieren), damit der Server eingehende Daten überprüft und ungültige Pushs ablehnt. Der Client wird dann einen Fehler sehen, der ungefähr so aussieht:Ich hoffe, das hilft!
quelle
Vielleicht solltest du es vermeiden, alles in ein Repository zu verschieben. Mit Mercurial und seiner verteilten Natur kann jeder seinen Zweig haben, und wenn er sich bereit fühlt, sagt er es dir und du ziehst daran. Keine Commit-Zugriffsprobleme, kein Push, der Sachen kaputt macht ...
Dies ist zumindest ein Rat, den mir ein Freund gegeben hat, als ich von SVN nach Mercurial migriert bin.
Ich weiß nicht, ob dies eine Option für Sie ist, aber wenn Sie ein persönliches Repository für alle einrichten und dann die benötigten Personen abrufen, ist möglicherweise weniger Arbeit erforderlich, als wenn Sie versuchen, gefährliche Stöße abzufangen.
quelle
Könnten Sie nicht das Gleiche tun wie David Herrons Blog , aber anstatt es beim Prerouting zu tun, tun Sie es mit dem Precommit-Haken am zentralen Repo?
quelle
Eine mögliche Alternative ist:
Diese Lösung ist nicht die, die Sie benötigt haben, aber Sie haben zumindest die Möglichkeit, Ihr Repository im Falle einer Beschädigung zurückzusetzen.
quelle