HSmakevers
HSmakevers ist die Antwort auf eine Zeit in der Versionskontrolle noch von Hand gepflegt wurde. Heute bieten das einige IDE's mit an, aber meine IDE CodeBlocks hat da noch einige Schwierigkeiten. Wichtig ist die Entscheidung, ob man HSmakevers als Pre- - sprich vor dem Compilieren durchführt oder erst hinterher. Für einen Aufruf Hinterher spricht, dass man Versionsnummnern spart. Ebenso wird die Zeit eingespart um überbaupt eine neue Versionsnummner zu erstellen. Setzt man HSmakevers als Prebuild ein, dann hat man den Vorteil, dass man direkten Einfluss auf die nächste Versionsnummner hat. Die Entscheidung muss jeder selbst fällen.
Kommen wir zum Aufbau einer version.h:
1: // This is a generated File. Don't modify if you not understand what your are do 2: 3: #ifndef I_VERSION_H 4: #define I_VERSION_H 5: 6: #define I_MAJOR 1 7: #define I_MINOR 8 8: #define I_BUILD 1 9: #define I_BETA "Beta" 10: 11: #define I_BuildCount 322 12: #define I_BDate "17.11.2016 15:18:54" 13: #define I_FullVersion "1.8.1 Beta" 14: 15: #endif // I_VERSION_HIm Einzelnen:
Zeile 3 enthält den Blockstart, der eine doppelte Einbindung erlaubt. der Block endet in Zeile 15. Zu dem I_ vor allen Definitionen ist ein Parameter verantwortlich. MAJOR.MINOR.BUILD ist die Versionsnummner. Beta der Status der Software.
Um überhaupt HSmakevers zur Arbeit zu bewegen muss es eine Ausgangdatei geben. Das kann eine leere Datei sein.
Die Parameter von HSmakevers:
OPTIONS: | ||
-p <Prefix> | use Prefix | |
-i <IFile> | use IFile for Input; default is VERSION.h | |
-o <OFile> | use OFile for Output; default is the same as input | |
-b <num> | max Builds before Minor changed default: 999 | |
-m <num> | max Minor before Major changed default: 999 | |
-r newBeta | Name of Version like Beta, Gamma or Release | |
-s | for a new subversion (Minor) | |
-d | don't use #define VERSION_H | |
-h | don't write history.txt | |
-c | Comment |
-
-p ist der schon angesprochene Vorbau der Definition
z.B.: -P HS_
würde einem MAJOR zu einem HS_MAJOR machen. -
-i <IFile> IFile ist die Ausgangsdatei. ohne Angabe ist das
VERSION.h
z.B.: -i vers.HCC -
-o <OFile> OFile ist die zu erzeugende Datei. ohne Angabe
ist die Ausgangsdatei
z.B.: -o VERSION.HCC
Anm.: Die Ausgangsdatei wird NICHT geändert. Es findet also kein wirkliches Hochzählen statt. -
-b <num> num ist der Zähler ab dem BUILD wieder zu 0 wird und
MINOR um eins hochgezählt wird
z.B.: -b 9 -
-m <num> num ist der Zähler ab dem MINOR wieder zu 0 wird und
MAJOR um eins hochgezählt wird
z.B.: -m 9999 -
-r name lässt es zu das man den Status der Software verändert (definiert).
Tip:Fehlerhafte Software wird auch mit der Bezeichnung "Final" nicht besser!
z.B.: -r Final´
Das lässt sich in manchen IDEs besonders gut verwenden, da dort das "Backen" der Software einzeln definiert wird.
Bei DEBUG = "Beta" lässt man das -s natürlich weg
Bei Release = "Final". -r Final würde ich immer zu einem -s suggerieren. -
-s erzwingt das eine neue MINOR Version erstellt wird. Build wird automatisch zur 0.
-
-d schaltet ab, dass der Kontrollblock erzeugt wird. Ich rate davon ab, diesen
Schalter zu verwenden. Der Kontrollblock sollte keinen Compiler stören.
-
-h schaltet ab, dass eine Datei history.txt erzeugt wird. In dieser stehen
Versionsnummer und Datum mit Zeit, wann die VERSION.h geändert wurde. Kann man
abschalten - muss man aber nicht.
-
-c Comment schreibt einen beliebigen Kommentar mit in die VERSION.h
z.B.: -c "This File is Part of the BlahDistribution"