Subversion / TortoiseSVN Properties und Keywords verwenden

Written on September 02, 2007

Gerade bei der Entwicklung im Team ist es praktisch, wenn man z.B. die Revisionsnummer einer .cs-Datei in der selbigen während des Editierens sehen kann, ohne erst den Umweg z.B. über einen Rechtsklick auf die Datei im Explorer gehen zu müssen. Verwendet man Subversion für die Versionsverwaltung, lässt sich dies leicht realisieren - das Stichwort lautet "Properties" bzw. "Keywords".

Properties

Über Properties können für jede Datei bzw. jeden Ordner Subversion-bezogene Eigenschaften gesetzt werden. Um Properties für eine Datei oder einen Ordner zu setzen, ist ein Rechtsklick auf die Datei notwendig und danach auf "Eigenschaften":

Eigenschaften der Datei

Danach muß der Reiter "Subversion" ausgewählt werden:

Reiter Subversion

Anschließend ist noch ein Klick auf "Properties" notwendig, um die Subversion-bezogenen Eigenschaften der Datei ICreated.cs anzuzeigen:

Subversion Eigenschaften von ICreated.cs

Über einen weiteren Klick auf den "Edit"-Button kann man die Eigenschaften erwartungsgemäß bearbeiten:

Bearbeiten der Eigenschaften

Keywords

In diesem Fall ist die Eigenschaft "svn:keywords" gesetzt, welche zur sog. Keyword Substitution verwendet werden. Keyword Substition bietet in Subversion die Möglichkeit, dynamische Informationen über eine Datei in den Dateiinhalt selbst zu integrieren. Die Keywords beinhalten Informationen über die letzte Modifikation der betreffenden Datei.

Die Verwendung ist relativ einfach: An der Stelle, an der das Keyword in der Form $KeywordName$ (case-sensitiv) in der Datei steht, wird nach dem Commit die entsprechende Information von Subversion eingetragen.

Subversion kennt folgende Keywords:

  • Date
    Gibt das Datum an, wann die Datei im Repository zuletzt verändert wurde, angegeben im Format: $Date: 2007-09-02 22:42:37 -0700 (Sun, 02 Sept 2007) $. Alternativ kann auch die Bezeichnung LastChangedDate verwendet werden.

  • Revision
    Gibt die Revisionsnummer der Datei im Repository im Format $Revision: 655 $ an. Alternativ kann auch die Bezeichnung LastChangedRevision oder Rev verwendet werden.

  • Author
    Gibt den Autor der letzten Änderung der Datei im Repository im Format $Author: AZeitler $ an. Alternative: LastChangedBy.

  • HeadURL
    Gibt die die vollständige URL der Datei im Repository im Format $HeadURL: http://svn.collab.net/repos/trunk/README $ an. Alternativ kann auch die Abkürzung URL verwendet werden.

  • Id
    Stellt eine Kurzform der vorgenannten Keywords in der Form $Id: ICreated.cs 655 2007-09-02 22:42:37Z AZeitler $ dar.

Properties automatisch setzen

Der vorgezeigte Weg muß für jede Datei einzeln durchgeführt werden. Um dies zu vereinfachen, lässt sich in der lokalen Subversion-Konfigurationsdatei einstellen, dass für bestimmte Dateitypen bestimmte Properties gesetzt werden sollen (dies muß jedoch vor dem Erzeugen einer neuen Datei eingestellt werden, bestehende Repositories müssen händisch angepasst werden).

Um die Properties für neu zum Repository hinzugefügte Dateien automatisch setzen zu lassen, müssen in der Datei

C:\Users\AZeitler\AppData\Roaming\Subversion\config

(unter Windows Vista) zunächst im Abschnitt [miscellany] die enable-auto-props = yes gesetzt werden.

Sollen nun alle Keywords für alle C#-Dateien automatisch gesetzt werden, ist im Abschnitt [auto-props] folgender Eintrag notwendig:

*.cs = svn:keywords=HeadURL LastChangedBy LastChangedRevision LastChangedDate Id

Der Kommentarheader in einer C#-Datei könnte dann wie folgt aussehen:

//===============================================================================
// URL                : $HeadURL$
// Letzte Änderung von: $LastChangedBy$
// Revision           : $LastChangedRevision$
// Letzte Änderung am : $LastChangedDate$
// Autor              : $Author$
// Beschreibung       : Beschreibung der Datei
//=============================================================================== 

In .aspx-Dateien könnte der Header dann wie folgt aussehen:

Happy coding ;-)