Forum: PC-Programmierung Revision aus Github Repository holen


von Moot S. (mootseeker)


Lesenswert?

Hallo Zusammen,

ich arbeite momentan an einem Firmware Projekt, welches sich auf Github 
befindet. Nun möchte ich die Nummer der Revision (Anzahl Commits im 
Repository ) als meine automatische Firmware versionsnummerierung 
nutzen.

Nun habe ich herausgefinden wie ich die Nummer holen kann über ein 
CMD-Befehl. Dieser geht wie folgt:
1
 git rev-list HEAD --count

Dieser Behfehl gibt mir z.B. 230 zurück.

Wie kann ich nun diese Zahl z.B. in ein Header-File speichern als:
1
 #define REVISION *Zahl*
?

Das ganze würde ich gerne als Batch-File realisieren, da ich das in 
meiner IDE als Pre-Command hinterlegen kann.

Kann mir da jemand helfen, kenne mich garnicht damit aus und wurde mit 
googln auch nicht schlauer.

Selbst habe ich schon dies versucht:
1
@echo off
2
3
git rev-list HEAD --count
4
5
echo #define REVISION "%temp%" > Core\Inc\revision.h

Dies funktioniert bei mir aber nicht, es steht dann immer folgendes im 
Header-File: #define REVISION "C:\Users\mootseeker\AppData\Local\Temp"

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Moot S. schrieb:
> Selbst habe ich schon dies versucht:
>
1
> 
2
> @echo off
3
> 
4
> git rev-list HEAD --count
5
> 
6
> echo #define REVISION "%temp%" > Core\Inc\revision.h
7
> 
8
>

Ähm, Windows Batch-Job? Windows Scripting ist immer eine Katastrophe. 
Batch-Jobs können zu wenig, PowerShell ist komplett überzüchtet.

Mit einem Batch-Job muss man sich richtig ins Knie schießen um die 
Ausgabe eines Befehls in eine Variable zu bekommen. Etwa so:
1
for /f "delims=" %%t in ('git rev-list HEAD --count') do set count=%%t

Und nun frag mich mal jemand warum ich Microsoft für eine komplett 
inkompetente Firma halte ...

Noch was, den Variablennamen temp solltest du nicht verwenden, dass ist 
eine Variable die Windows selber verwendet (Pfad zum Verzeichnis für 
temporäre Dateien). Am besten noch den ganzen Batch-Job in SETLOCAL (mit 
oder ohne ENABLEDELAYEDEXPANSION) und ENDLOCAL klammer, dann kann man 
nicht versehentlich vorhandene globale Variablen überschreiben.

: Bearbeitet durch User
von Martin H. (horo)


Lesenswert?

Für unixoide Systeme geht das einfach per "git-hook":
https://gist.github.com/sg-s/2ddd0fe91f6037ffb1bce28be0e74d4e

von Moot S. (mootseeker)


Lesenswert?

Hannes J. schrieb:
> Mit einem Batch-Job muss man sich richtig ins Knie schießen um die
> Ausgabe eines Befehls in eine Variable zu bekommen. Etwa so:

Vielen Dank, das hat funktioniert!

von Moot S. (mootseeker)


Lesenswert?

Martin H. schrieb:
> Für unixoide Systeme geht das einfach per "git-hook":
> https://gist.github.com/sg-s/2ddd0fe91f6037ffb1bce28be0e74d4e

Das hat ebenfalls funktioniert, danke!

von Walter T. (nicolas)


Lesenswert?

Für Subversion gibt es ein Kommando, dass eine Template-Textdatei mit 
Repository-Informationan formatiert füllen kann (subwcrev). Es würde 
mich wundern, wenn es ähnliches für GIT nicht gäbe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.