Frage

Ich habe ein repository, das hat den folgenden Verzeichnissen:

  • Zweige
  • tags
  • trunk

Das trunk-Verzeichnis enthält die wichtigsten Linie der Entwicklung.Habe ich einen post-commit-hook-script für die repository-updates eine funktionierende Kopie (der Stamm), wenn ein Benutzer verpflichtet sich zurück in den Speicher.

Es sieht so etwas wie dieses:

/usr/bin/svn update /path/to/a/working/copy

Ich habe gerade eine Filiale der code, wie ich bin, zu Beginn einige wichtige änderungen, aber bemerkt, dass, wenn ich verpflichte mich, meine änderungen zu ast, es ruft die post-commit-hook und aktualisiert die Arbeitskopie (eine Kopie von trunk).

Gibt es eine Möglichkeit, die ich ändern kann, entweder meine post-commit-hook-Skript oder eine Einstellung die ich machen kann, dass würde nur update die Arbeitskopie wenn der commit gemacht wurde, um das trunk-Verzeichnis und nicht in einem anderen Verzeichnis?

War es hilfreich?

Lösung

Wie Sie sehen können, in diese Dokumentation, Parameter übergeben werden, um den post-commit-Skript.

Das repository übergibt zwei Argumente für dieses Programm:der Pfad zu dem repository, und die neue Revisionsnummer, die erstellt wurde.

Die post-commit-hook werden könnte jedes Programm von jedem Typ :ein bash-Skript, ein C-Programm, ein python-Skript,...Was passiert, ist, dass die shell startet dieses Programm, mit dem zwei Parameter.

Finden Sie eine Liste von interessanten Skripte hier.Ein guter Anfang wäre dieses python-Skript, verwendet die python-svn-libs.

Bitte beachten Sie, dass der angegebene Pfad ist nicht das gleiche wie der Pfad zu der Datei, die Sie Einchecken (siehe Pauls Antwort).Aber die Verwendung dieser Informationen mit der revnum soll Ihnen die Liste der änderungen, von der aus Sie können bestimmen, ob Operationen durchgeführt wurden, die auf Stamm-oder nicht.

Andere Tipps

Zusätzlich zu den Antwort von Bishiboosh, es ist erwähnenswert, dass die Haken werden kann alle Programm.Das heißt, wenn Sie wollten, könnten Sie schreiben das Programm in C.Die Parameter, die übergeben werden beschrieben in der doc.

Für einen guten repository-Skripte, um die inspiration aus, haben Sie einen Blick auf die subversion-tools Seite.Im Allgemeinen, wenn Sie wollen zu tun einige bedingte Verarbeitung basierend auf dem Inhalt der Transaktion, und tun Sie, weil Sie nur wollen, um Prozess, wenn die Dateien in den Kofferraum, dann wird es am einfachsten sein, die Verwendung von Python, da wird mit einer Reihe von tools zu prüfen, die Transaktionen. Dieses Skript ist ein guter Ort, um zu beginnen Suche nach inspiration.

Beachten Sie, dass der Pfad auf die parameter ist nicht die gleiche, wie den Pfad zu der Datei, die Sie Einchecken.Sie könnte mehrere Dateien in der Kasse nach allem... Was Sie übergeben, ist der Speicherort der repository und die revision der Veränderung.Mit diesen beiden Informationen können Sie den Informationen über die änderungen aus dem repository aus, und verwenden Sie diese Informationen, um zu entscheiden, ob eine Aktion ausführen oder nicht in der post-commit-hook.

Hier ist ein weiteres Beispiel (in Perl), die explizit überprüft den Pfad der Dateien, die in der Kasse.Dies ist eine viel kompliziertere Skript, aber wahrscheinlich die markante Teile können Riss und re-verwendet.

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