bloginista
Massimiliano Siddi
Home
  • Blog

Keyword-Substitution in Subversion

23. Januar 2009 23:40 von madmax
Subversion hat wie CVS auch die Fähigkeit, bestimmte Schlüsselwörter in Quellcodedateien zu ersetzen. Dies wird meistens genutzt, um in Quellcodedateien automatisch Angaben wie beispielsweise das Datum der letzten Änderung, den Namen des Autors, der die letzte Änderung durchgeführt hat, oder die Revisionsnummer einzufügen. Damit Schlüsselwörter auch ersetzt werden, muss diese Funktion erst einmal für Dateien im Repository aktiviert werden.

Schlüsselwort in Datei einfügen

Natürlich möchte man die Kontrolle darüber haben, an welcher Stelle in der Datei das Schlüsselwort eingefügt wird. Zu diesem Zweck fügt man einfach ein entsprechendes Schlüsselwortanker an die gewünschte Stelle ein. Dieser Anker besteht aus zwei Dollar-Zeichen $$, zwischen denen das Schlüsselwort steht, beispielsweise $Date$. Das folgende Beispiel zeigt, wie so ein Schlüsselwort-Anker aussehen kann:

/** * Zip funtions (abstraction) * * @copyright 2002-2007 by example Software GmbH - All rights reserved. * @link http://www.example.org/ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License, version 2 * * You can redistribute and/or modify this script under the terms of the GNU General Public * License (GPL) version 2, provided that the copyright and license notes, including these * lines, remain unmodified. papaya is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. * * @package example_base * @author Benno Beispiel <info@example.org> * @version $Id$ */ Freilich stehen die Schlüsselwort-Anker immer in Kommentarblöcken von Quellcodedateien, damit sie nicht das Programm ungültig machen und zu Problemen beim Kompilieren führen.

Schlüsselwort-Substitution aktivieren

Damit das Schlüsselwort auch substituiert werden kann, muss die Ersetztung zunächst einmal aktiviert werden. Dies geschieht, indem man für die Datei ein bestimmtes SVN-Property setzt. Dies geschieht mit dem Kommandozeilenbefehl svn propset, das mit folgendem Schema aufgerufen wird:

user@linux:~$ svn propset [property-name] "[Liste der Attribute]" [Dateiname] Properties bestehen immer aus einem Namen und einer Liste von Werten. Der Property-Name für die Keyword-substitution ist svn:keywords. Die Liste von Werten oder Attributen werden in doppelte Anführungszeichen gesetzt. Mehrere Werte werden einfach durch Leerzeichen getrennt. Um also in einer Quellcodedatei mit dem Namen example.php die Ersetzung für das Schlüsselwort Id zu aktivieren, muss folgender Befehl in die Kommandozeile eingegeben werden:

user@linux:~$ svn propset svn:keywords "Id" example.php property 'svn:keywords' set on 'example.php' svn meldet direkt nach der Befehlseingabe, ob die Eingenschaft gesetzt worden ist. Nachdem die Schlüsselwortsubstitution aktiviert und die Datei nach einer Änderung committet worden ist, sieht das expandierte Schlüsselwort wie folgt aus:

/** * Zip funtions (abstraction) * * @copyright 2002-2007 by example Software GmbH - All rights reserved. * @link http://www.example.org/ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License, version 2 * * You can redistribute and/or modify this script under the terms of the GNU General Public * License (GPL) version 2, provided that the copyright and license notes, including these * lines, remain unmodified. papaya is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. * * @package example_base * @author Benno Beispiel <info@example.org> * @version $Id: example.php 23215 2008-11-11 15:58:43Z beispiel $ */ Anders als der Name Substitution andeutet, wird das Schlüsselwort nicht vollständig ersetzt. Vielmehr bleibt das Schlüsselwort selbst als Anker in der Datei enthalten und wird stattdessen um die entsprechenden Informationen ergänzt oder expandiert.

Liste aller Subversion-Schlüsselwörter

Die folgende Tabelle listet alle Schlüsselwörter auf, die in Subversion benutzt werden können:

Schlüsselwort Bedeutung
AuthorBenutzername des Autors, der die Datei das letzte Mal geändert hat. Ein Alias-Schlüsselwort ist LastChangedBy.
DateDas Datum und die Uhrzeit der letzten Änderung. Die Timestamp-Angabe enthält zudem die lokale Zeit.
HeadURL Dieses Schlüsselwort beschreibt die absolute URL zur letzten Version der Datei im Repository (wird als HEAD bezeichnet). Die URL kann folgende Form haben: http://svn.example.org/repos/trunk/Projekt/example.php
IdDas Id-Schlüsselwort liefert eine kompakte Zusammenfassung aller anderen genannten Schlüsselwörter. Es enthält den Namen der geänderten Datei, die Revisionsnummer, Datum und Uhrzeit der Änderung in UTC sowie den Benutzernamen des Autors. Ein Beispiel ist: $Id: example.php 24200 2009-01-22 16:33:44Z peter $
RevisionDie Revision ist die Nummer der Revision, in der die Datei zuletzt geändert worden ist. Aliase sind: LastChangedRevision oder Rev. Beispiel: $Revision: 144 $

Wichtig ist, dass die Groß- und Kleinschreibung beachtet werden muss. Ein Schlüsselwort wie $id$ ist also strenggenommen falsch, auch wenn einige Clients dieses dennoch richtig erkennen und expandieren.

Quellen

Posted in Versionierung

Keine Kommentare


(Kommentarbereich geschlossen)

← Ältere Einträge Neuere Einträge →