Frage

Ich möchte implementieren Sie eine Art der Aufzeichnung die version eines Projekts innerhalb des Codes, so dass es kann verwendet werden, wenn das testen und zu helfen track bugs.Es scheint, die beste version, die Nummer, die Sie verwenden würden nur die aktuelle revision Anzahl von Subversion.Gibt es eine einfache Möglichkeit, um Haken die Zahl in eine C++ in meinem Fall) header-Datei oder etwas, das ich kann dann auf die im code?Ich denke, dies ist ein post-commit-hook oder was?

Hat jemand eine Erfahrung mit der Umsetzung dieser (mit code zu teilen, bitte?), oder kann vorschlagen, eine bessere alternative?Vielen Dank.

War es hilfreich?

Lösung

Während nifty bei der revision Schlüsselwort trick nur die Datei aktualisiert, wenn es sich in dieser revision geändert - wenn Sie nicht ändern Sie die Datei, dann wird es weiterhin entsprechend der alten revision.

Wenn Sie möchten, dass die software immer spiegeln die Allgemeine Revisionsnummer, dann müssen Sie Tauchen Sie ein in die relevante SVN Einträge Datei und extrahieren Sie es, das ist nicht allzu schwer, (es ist eine XML-Datei).

Wikipedia tut dies auf Ihre version Seite zu zeigen die überarbeitung der software, die mit Leben; der code ist hier - suchen Sie das getSvnRevision() Methode.

Andere Tipps

Zwei Möglichkeiten:

Einbetten $Id$ oder $Revision$ innerhalb des Codes.Setzen Sie dann svn:keywords="Id-Revision" Eigenschaft in der Datei.Dies wird Ihnen die Letzte geänderte revision der Quelldatei.Gut für kleinere Projekte und Scripte.

Alternativ verwenden Sie ein Makefile gesteuerten Prozess und das Kommandozeilenprogramm svnversion.(Sprachspezifisch - diese Arbeit sollte für C/C++)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

Oder einige komplexere build-Skript mit sed und version.h.in.Dann einfach #include version.h

Geben Sie die repository-version und-Nummer, die ändern sich mit jedem commit / update und ist wahrscheinlich eine mehr entsprechende Versionsnummer für die meisten Projekte.

Hinweis:Ich habe auch eine lesbare version-Zeichenfolge, die ich manuell aktualisieren.Würde das Beispiel zu geben: Version:1.0.1-r13445

~J

Sie können auch SubWCRev die Teil von TortoiseSVN.

SubWCRev ist Windows-Kommandozeilenprogramm, das verwendet werden kann zum Lesen des status eines Subversion-Arbeitskopie und Optional führen Sie keyword-substitution in eine template-Datei.Dies wird oft als Teil des build-Prozesses als Mittel der Integration der Arbeitskopie Informationen zu dem Objekt, das Sie erstellen.In der Regel könnte es verwendet werden, um die revision-Nummer in ein Feld "Über".

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

in Ihrem Makefile hinzufügen:

SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...

dann können Sie mit makro SVN_REV irgendwo in Ihrem code, z.B.:

printf ("Version: SVN %s\n", SVN_REV);

Sie verwenden können die svn:keywords - Eigenschaft zu aktivieren, die Rev Schlüsselwort.

Dann können Sie $Rev$ in Ihrem code und SVN wird erweitern automatisch, wenn eine Aktualisierung auf $Rev: 256 $ die können dann Parsen...

Mehr info auf der Subversion-Handbuch

Eine gute up-to-date-Lösung:

Erstellen Sie eine Makefile mit der folgenden Zeile (im selben Ordner wie YourFile.dox):

sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox

Und YourFile.dox beinhalten sollte dieser:

...
PROJECT_NUMBER         = "Revision RevNumber"
...

Jetzt:

  1. sed ersetzt RevNumber in der .dox mit der Ausgabe des svnversion (ausgeführt in den main-Ordner des Repositorys) und speichert die geänderte Datei zu YourFileDummy.dox
  2. doxygen ausgeführt YourFileDummy.dox zur Generierung der Dokumentation
  3. Ihre Dokumentation enthält nun die revision-Nummer!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top