Frage

Wir verwenden svn: externals auf bestimmte Versionen einer Bibliothek, z.B. wie

xyzlib -r12345 https://asdf.asdf.local/xyzlib/trunk/

Wenn Sie eine Änderung in Ihrer Arbeitskopie auf eine solche externe ausgecheckt, es ist möglich, auch wenn die externen Links auf eine bestimmte Revision zu begehen und nicht den Kopf.

Wenn Sie svn update nach dem Commit ausführen, werden die Änderungen in der Arbeitskopie gegangen werden, da Subversion alles wieder auf die Revision kehrt 12345. Damit Sie wirklich nie die Änderungen selbst sehen, aber sie sind immer noch im Kopf, was schlecht ist.

Ist es möglich, Commits nur zu verbieten, wenn die außerhalb der HEAD-Revision zeigt nicht?

War es hilfreich?

Lösung

Für diese Arten von Validierungen würde ich empfehlen, auch eine pre-commit Haken, sondern ein Skript zu schreiben, die leicht herausstellen kann unmöglich sein, die ich zu verstehen, empfehlen eine Bibliothek wie SVNKit mit - http://svnkit.com/ (wenn Sie wissen, Java).

Ich habe geschrieben mit dieser Bibliothek ein paar pre-commit Haken mich mit und es ist ganz einfach zu arbeiten. Sie schreiben ein kleines runnable Java-Programm, das von den pre-commit Haken von Subversion aufgerufen wird. Dann ist es leicht, zum Beispiel zu extrahieren Eigenschaften oder Teile der URL die Validierung zu tun, und lehnen die begehen, wenn es zu einem „Regeln“.

gilt nicht

Werfen Sie einen Blick auf die SVNLookClient und SVNChangeEntry Klassen - (. B. Extrahieren von Informationen über einen laufenden Festschreibung) haben sie Methoden für die häufigsten Fälle

Andere Tipps

Sie könnte so etwas wie diese versuchen: Verwenden Sie ein pre-commit Skript zu überprüfen, ob die Commit zu einem Tag gehen. Wenn ja, dann scheitern und eine Nachricht zur Verfügung stellen. etwas mehr über Subversion Haken lesen. Sie müssen werden re- die Regex schreiben, so dass es nicht aus, wenn sie nicht eher HEAD als Versagen, wenn ein Tag ist.

$SVNLOOK changed -t “$TXN” “$REPOS” | egrep -v “^[AD][[:space:]]+(.*/)?tags/[^/]+/$” | egrep “^[^[:space:]]+[[:space:]]+tags/[^/]+/.+”
if [ $? -eq 0 ] ; then
echo >&2 “***************************************”
echo >&2 “* Modification of tags is not allowed *”
echo >&2 “***************************************”
exit 1
fi

Da Sie https verwenden, ich nehme an, Sie mod_dav_svn verwenden. Sie könnten eine zusätzliche URL Ihrer Bibliothek Repository einrichten und gewähren nur Lesezugriff zu. Auf diese Weise auch Entwickler, die in die Bibliothek normalerweise begehen können, nicht in der Lage sein, durch den SVN zu begehen. Externe

Wenn IhrFormal nicht verpflichtet, die externe Aufbewahrung als Revision des Rumpfes definiert ist, warum nicht nur einen neuen Tag auf dieser Revision machen basierte. Sie können dann Ihre svn:. Externen Punkt mit dem Tag, und einer der dokumentierten Zugriffskontrolle Methoden Commits zu Ihrem Tag-Verzeichnis zu begrenzen (oder den Tag in einem anderen Repo setzen und dass Repo nur lesbar machen)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top