GitRevisionTool
Gibt Informationen zur aktuellen Git-Revision eines Arbeitsverzeichnisses aus und schreibt sie automatisch zum Erstellen in dein .NET-Projekt.
Archivierter Inhalt: Diese Anwendung ist derzeit inaktiv und möglicherweise veraltet, nicht mehr gewartet oder funktioniert nicht mehr.
Diese Anwendung wurde durch NetRevisionTool ersetzt. NetRevisionTool ist eine Weiterentwicklung von GitRevisionTool und SvnRevisionTool in einem Programm und bietet neue flexible Funktionen.
GitRevisionTool ist ein kleines Entwicklerwerkzeug, das Informationen zur aktuellen Git-Revision eines Arbeitsverzeichnisses ausgibt. Es kann diese Angaben auch direkt in deinen Anwendungsquelltext schreiben, so dass sie gleich mitkompiliert werden. Das funktioniert für .NET-Projektmappen in C# und VB.NET, die die übliche Visual-Studio-Projektstruktur verwenden.
Warum?
Jede etwas größere Anwendung hat eine Versionsnummer, die der Benutzer in einer Form von Über/Info-Dialogfenster abrufen kann. Wenn du häufig neue Versionen veröffentlichst und keine strukturierten Versionsnummern verwalten möchtest (wie die von GitRevisionTool selbst), könntest du einfach die Git-Revisions-ID oder den Commit-Zeitpunkt als Versionsnummer für dein Produkt verwenden. Durch das automatisierte Eintragen dieser Revisions-ID in den Anwendungsquelltext vermeidest du es, das einmal zu vergessen. Außerdem harmoniert die Keyword-Ersetzungsfunktion von Git selbst nicht besonders gut mit C#-/VB.NET-Quelltext, um eine lesbare Versionsangabe für das Assembly zu erzeugen. GitRevisionTool ist für diesen Fall optimiert.
Wie wird es benutzt?
Lad das Programm herunter und kopier es in das Verzeichnis deiner Visual-Studio-Projektmappe. Ich stecke solche kleinen Helferlein gerne in ein Unterverzeichnis „_scripts\bin“ (siehe Screenshot unten), gemeinsam mit dem PowerShell-Build-Framework. Du solltest die Programmdatei ins Git-Repository aufnehmen, um es portabel zu halten. Ein Eintrag wie der folgende in der .gitignore-Datei stellt sicher, dass die Datei nicht ignoriert wird:
Öffne dann die Projekteigenschaften und geh auf die Seite Buildereignisse (siehe Screenshot unten). Gib die folgende Befehlszeile für das Präbuildereignis ein (in einer Zeile):
if not defined FASTBUILD "$(SolutionDir)\_scripts\bin\GitRevisionTool.exe" -ai "$(ProjectDir)"
Wenn du ein Unterverzeichnis verwendet hast, musst du den Pfad wie im Screenshot anpassen. Dann noch die Befehlszeile für das Postbuildereignis:
if not defined FASTBUILD "$(SolutionDir)\_scripts\bin\GitRevisionTool.exe" -si "$(ProjectDir)"
Wichtig: Das Postbuildereignis muss immer ausgeführt werden, um sicherzustellen, dass die veränderte Quelltextdatei immer richtig wiederhergestellt wird, auch wenn sich das Projekt gerade nicht erstellen lässt.
Die Einschränkung mit der Umgebungsvariable „FASTBUILD“ ermöglicht es, die Ausführung von SvnRevisionTool für jedes einzelne Projekt zu steuern. Für Projektmappen mit vielen (> 25) Projekten kann diese Umgebungsvariable gesetzt werden (auf einen beliebigen nicht-leeren Wert), um die Ausführung von SvnRevisionTool zu unterbinden. Dadurch wird die Builddauer verkürzt. Bei Nutzung des PowerShell-Build-Frameworks wird diese Variable ebenfalls genutzt und SvnRevisionTool im Multi-Projekt-Modus gestartet. Wird diese Eigenschaft nicht benötigt oder gewünscht und das PowerShell-Buildskript nicht genutzt, kann der Teil if not defined FASTBUILD
auch weggelassen werden, um sicherzustellen, dass SvnRevisionTool immer verwendet wird.
Öffne jetzt die Datei AssemblyInfo.cs oder .vb, um die Versionsangabe einzurichten. Diese Datei befindet sich normalerweise im Ordner „Properties“ oder „My Project“. Such nach dem AssemblyInformationalVersion
-Attribut und füg es hinzu, falls es noch nicht da ist. Hier ein paar Beispiele:
[assembly: AssemblyInformationalVersion("commit {commit} on {date} {time}")]
// Git-Zeitcode und Commit-Hash (FieldLog, in den Screenshots):
[assembly: AssemblyInformationalVersion("{bmin:2014:4}.{commit:6}{!:+}")]
Die Programmausgabe für den Parameter --help
verrät dir alle Details. Es gibt noch weitere Platzhalter, um kompakte, sortierbare Versions-IDs zu erzeugen, die Option, ein unverändertes Arbeitsverzeichnis zu erfordern und andere nützliche Dinge.
Wie tut es das, was es tut?
GitRevisionTool wird im Präbuildereignis mit dem Parameter -a
aufgerufen. Das ist jedes Mal beim Erstellen des Projekts, bevor der Compiler loslegt. Es findet deine AssemblyInfo.cs- oder .vb-Datei und ersetzt alle Platzhalter im AssemblyInformationalVersion-Attribut mit den aktuellen Revisionsdaten. Visual Studio verwendet diese Datei dann zum Kompilieren. Zum Schluss wird mit dem Parameter -s
die Datei aus der vorher angelegten Sicherungskopie wiederhergestellt, damit du (und Git) keine Veränderungen siehst.
Wichtig: Damit das so funktioniert, darf die AssemblyInfo-Datei während des Erstellens nicht im Visual-Studio-Editor geöffnet sein. Ansonsten werden die Änderungen, die GitRevisionTool in diese Datei schreibt, vom Compiler ignoriert. Wenn du die Versionsangabe änderst und Test-Builds erstellst, musst du diese Datei also immer wieder schließen.
Kompatibilität:
Ich habe noch ein ähnliches, älteres Tool, das das gleiche für Subversion-Repositorys macht: SvnRevisionTool
Bilder
Download
GitRevisionTool_NET20.exe49,5 KiBProgrammdatei, Version 1.7.3, .NET 2.0
master.zipAktueller Quelltext direkt von GitHub (GitRevisionTool und SvnRevisionTool)
Es gibt ein öffentliches Git-Repository von GitRevisionTool bei GitHub.
Funktioniert es nicht?
GitRevisionTool erfordert eine Installation von Git für Windows. Es sucht nach bin\git.exe in Verzeichnissen, die es im Uninstaller-Eintrag findet, oder durchsucht dein Programme-Verzeichnis. Wenn es Git nicht findet, kann es dir auch nicht helfen. (Ich habe angefangen, Code zu schreiben, der das .git-Verzeichnis direkt ausliest, wie ich es für .svn gemacht habe, aber für einen ersten Versuch hat sich das als zu kompliziert herausgestellt.) Es sollte ausreichen, einfach msysGit mit den Standardeinstellungen zu installieren. GitHub hat eine nette Dokumentation darüber.
GitRevisionTool kann nur C#- und VB.NET-Projektdateien verarbeiten. Für andere Projekttypen wird es nur die Revisionsinformationen ausgeben (dafür aber so formatiert, wie du es willst). Du brauchst vielleicht ein eigenes CMD-Skript, um Dateien zu verändern. Setz die Formatangabe auf etwas wie SET revid={commit}
, leite die Ausgabe in eine temporäre Batchdatei um (die muss außerhalb des Arbeitsverzeichnisses liegen, oder die Arbeitskopie wird immer als verändert gekennzeichnet!), ruf diese Datei auf und bearbeite deine Dateien unter Verwendung der Umgebungsvariable %revid% mit sed oder einem anderen Tool. Du solltest diese Datei ggf. entsprechend sichern und wiederherstellen.
Dies ist selbst eine .NET-Anwendung. Sie ist für das .NET-Framework 2.0 erstellt, du solltest also keine Probleme unter Windows Vista oder neuer haben. Wenn du Visual Studio 2005 oder neuer verwendest, hast du das .NET-Framework sowieso bereits installiert.
Änderungen
Lizenz und Nutzungsbedingungen
Diese Software wird unter den Bedingungen der GNU-GPL-Lizenz Version 3 veröffentlicht. Die genauen Lizenzbedingungen befinden sich im Download oder auf der GNU-Website.
Statistische Daten
- Erstellt am 2011-12-14, aktualisiert am 2015-01-26.
- Ca. 890 Codezeilen, geschätzte Entwicklungskosten: 890 - 3 600 €