Ich führe das zentrale Quecksilber-Repository aus und verstehe, dass der normale "Push" -Befehl beendet wird, wenn der Remote-Benutzer versucht, mehrere "Köpfe" in mein zentrales Repository zu zwingen. Die Absicht ist, dass der Remote-Benutzer zuerst zieht und zusammenführt, bevor er erneut versucht, zu pushen.
Die Verwendung hg push --force
überschreibt dies jedoch. Ich möchte dieses Verhalten blockieren.
Ich verwende derzeit das hgwebdir.cgi
Plus einige Apache-Auth-Sachen, um die Fähigkeit der Benutzer zum Ziehen und Schieben einzuschränken.
BEARBEITEN: Ein pretxnchangegroup-Hook hat das Problem gelöst. Haken funktionierte:
#!/bin/bash
# force-one-head
# add the following to <repository>/.hg/hgrc :
# [hooks]
# pretxnchangegroup.forceonehead = /path/to/force-one-head
if [[ `hg heads -q | wc -l` -gt 1 ]]; then
echo "There are multiple heads."
echo "Please 'hg pull' and get your repository up to date first."
echo "Also, don't 'hg push --force' because that won't work either."
exit 1
fi
apache-2.2
mercurial
user9748
quelle
quelle
hg push
, wird Mercurial abgebrochen, bevor etwas gepusht wird und Ihr Skript nicht ausgeführt wird. Wenn dieshg push --force
der Fall ist, wird Ihr Skript ausgeführt, die Zeile ist jedoch redundant.hg heads -q
im obigen Skript durchhg heads -q default
.Antworten:
Dies ist keine Apache-Änderung, aber Sie müssen sie im Mercurial-Repository selbst festlegen.
Sie können Hooks einrichten, die ein Skript ausführen, bevor Sie einen Push in Ihr Repository akzeptieren. In den durch die
pretxncommit
oderpretxnchangegroup
Hooks ausgelösten Skripten können Sie überprüfen, ob diese Änderungen einen neuen Kopf erzeugen, und sie gegebenenfalls ablehnen.Weitere Informationen finden Sie im Kapitel über Haken im Hg-Buch .
quelle
Es wird kein Hook mitgeliefert, der dieses Verhalten erzeugt. Sie müssen es selbst schreiben.
quelle
Erwägen Sie, das Repository auf einen zugriffsgesteuerten Server zu stellen und dann den Mercurial-Server (früher als hg-admin-tools bekannt) zu implementieren . Benutzer drücken SSH (unter Windows oder Linux) durch und unterliegen Ihren Zugriffskontrollen.
Es gibt zwei Berechtigungsdateien, mit denen Sie genau steuern können, wer lesen oder pushen kann. Unter einem Managementsystem können mehrere Repositorys eingerichtet werden, sodass Sie es nicht immer wieder installieren müssen.
quelle