2008-11-24 12 views
8

ich in einem Projekt arbeite, wo es Konfigurationsdateien, ein in Nummer für jede der Umgebungen, in denen die Anwendung bereitgestellt werden würde.Subversion Haken

Wenn ein Entwickler eine dieser Dateien ändert, sollte es dem Entwickler nicht erlaubt sein, die Datei einzeln einzuchecken, sondern alle Dateien zusammen einzuchecken oder zumindest der Entwickler darüber zu informieren, dass dies getan werden muss.

Wie können wir es erreichen?

Antwort

12

Ich würde denken, dass Sie ein pre-commit Haken, dies zu tun schreiben könnte - nur eine Liste von Dateien, wo, wenn man sich verpflichtet, dann müssen sie alle begangen werden.

Sie können Hooks in jeder Sprache schreiben, in die Sie eine Befehlszeilenanwendung schreiben können. Das einzige Problem ist, dass sie im Kontext des SVN-Servers laufen und (zumindest traditionell, weiß ich nicht, ob dies der Fall ist) verbessert wird), ihnen wird nicht viel Umgebung gegeben, wenn sie beginnen - Sie können zum Beispiel durch einen Mangel an 'PATH' erwischt werden.

Ihr Repository wird beispielsweise Batch-Datei/Shell-Skript Haken in dem ‚Haken‘ Verzeichnis hat, aber ich habe sie auch in C# in der Vergangenheit geschrieben.

Diese http://wordaligned.org/articles/a-subversion-pre-commit-hook sieht aus wie eine gute allgemeine Einführung in die Haken pre-commit.

1

Nein, um das Skript Informationen über die Transaktion zu erhalten können einfach Abfrage über die Details Svn. Und svn kann diese Informationen bereitstellen, es muss nicht auf dem gleichen Server sein.

Was er meint, ist, dass, wenn Subversion Ihre Haken führt es läuft w/o einer Umgebung und durch den SVN-Server selbst. Alle externen Ressourcen, auf die Ihr svn-Hook möglicherweise zugreifen muss, müssen vom svn-Server-Account zugänglich sein. Von dem, was Sie fragen, kann dies kein Problem sein, vorausgesetzt, Sie benötigen keinen externen Datenbankzugriff oder Ähnliches, mit dem Sie die Transaktion vergleichen können.

Ihre beste Wette ist an einigen der Subversion Haken that come with svn für Beispiele zu suchen. Auch SVN Hook Arguments listet wie jeder hook aufgerufen wird.