AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GIT-Submodul version auslesen

Ein Thema von himitsu · begonnen am 23. Apr 2020 · letzter Beitrag vom 10. Jun 2020
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 11:55
Mit einem git -C S:\rootdir\SMODUL show ... , da hat sich nicht geändert.


Ansonsten war ich ja anfangs davon ausgegangen, dass bei den Befehlen/Parametern für GIT es zwischen Batch/Windows und Bash/Linux keine Unterschiede,
außer den Pfaden

Bei einem anderen -C vom Wochenende, da gab es ja auch keine großen Unterschiede.
Code:
ssh-keygen -q -N "" -f "%USERPROFILE%\.ssh\id_rsa"
bzw.
ssh-keygen -q -N "" -f "C:\Users\%USERNAME%\.ssh\id_rsa"

"C:\Program Files\Git\bin\sh" -c 'ssh-keygen -q -N "" -f "/c/Users/%USERNAME%/.ssh/id_rsa"'
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#12

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 12:06
Mit einem git -C S:\rootdir\SMODUL show ... , da hat sich nicht geändert.
Sehr seltsam. Laufwerk S: ist lokal oder bspw. eine eingebundene Netzwerkfreigabe?

Ansonsten war ich ja anfangs davon ausgegangen, dass bei den Befehlen/Parametern für GIT es zwischen Batch/Windows und Bash/Linux keine Unterschiede,
außer den Pfaden
Jupp, und die kannste mit cygpath hin- und herkonvertieren.

Bei einem anderen -C vom Wochenende, da gab es ja auch keine großen Unterschiede.
Code:
ssh-keygen -q -N "" -f "%USERPROFILE%\.ssh\id_rsa"
bzw.
ssh-keygen -q -N "" -f "C:\Users\%USERNAME%\.ssh\id_rsa"

"C:\Program Files\Git\bin\sh" -c 'ssh-keygen -q -N "" -f "/c/Users/%USERNAME%/.ssh/id_rsa"'
Da fehlt mir jetzt irgendwie der Zusammenhang?! Das ist ja schon ein Unterschied ob ich ein kleines -c an die Bourne Shell (oder meinetwegen Bash) reiche oder an Git selber?!

Also, folgende Themen sollten wir erstmal abklären: du benutzt Git von der offiziellen Git-Seite oder du benutzt Git for Windows von gitforwindows.org? Und dann die obige Frage mit S:.

Kannst du das Ganze bitte einmal in der Bash for Git durchexerzieren?! Also ob das einen Unterschied zu cmd.exe macht? Beim Installieren hat man übrigens die Auswahl ob man den Git-Wrapper auch für cmd.exe usw. aktivieren will oder ausschließlich von Bash aus nutzt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (26. Mai 2020 um 12:35 Uhr) Grund: Wegen Corona
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 12:26
Ist ein SUBST auf ein anderes lokales Laufwerk. (im Prinzip auf H:\USERS\%USERNAME%)

War mir nur eingefallen, weil als du gestern von -C geredet hattest, ich zuerst wieder daran dachte, vor allem da es ja auch mit der Bash war.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#14

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 12:34
Ist ein SUBST auf ein anderes lokales Laufwerk. (im Prinzip auf H:\USERS\%USERNAME%)
Alles klar, war ich auch mal ein Fan von. Jetzt stellt sich natürlich gleich die Frage was H: ist. Lokales Laufwerk oder? ...

Aber jetzt laß doch mal die Details rüberwachsen! Welche Version von Git? Und teste bitte mal in "Git Bash" (unter dem Namen landet es im Startmenü). Ich habe es bei mir lokal mal in cmd.exe durchexerziert (also mit Windowspfadnamen) und es ging problemlos, sowohl mit relativem als auch mit absolutem Pfad und sowohl innerhalb des Worktrees vom Supermodul als auch außerhalb. Und genau das würde man ja erwarten, da -C eben einen Verzeichniswechsel vollführt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 13:29
Im CMD und SH sagt es "git version 2.23.0.windows.1"

und Tortoise sagt
TortoiseGit 2.10.0.2 (C:\Program Files\TortoiseGit\bin)
git version 2.22.0.windows.1 (H:\git\bin; H:\git\mingw64\; H:\git\mingw64\etc\gitconfig; C:\ProgramData\Git\config)

Microsoft Windows Server 2016 Standard, Version 10.0.14393 Build 14393
Intel Xeon E5-2620v4, 8 Kerne, 128 GB RAM
Festplatten im RAID und eine SSD (wo H: bzw. S: drauf liegen)
beim Login via RDP wird für den Benutzer jeweils das S: verbunden.

Und im Guthub sind die Repos nicht öffentlich.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 13:59
Echt mal, hatte grade versucht ein Repository als Beispiel nachzubauen. (zwei Repos erstellt, Add-Submodule und dann den Branch gewechselt)
Es sieht im Prinzip gleich aufgebaut aus, (siehe Beschreibung in #8)
aber hier funktioniert es plötzlich.

Die Batch liefert das richtige Ergebnis (a.txt)
und im Explorer zeigt Toroise es auch anders an. (siehe Post #1)
Miniaturansicht angehängter Grafiken
unbenannt.png  
Angehängte Dateien
Dateityp: 7z Test.7z (11,4 KB, 1x aufgerufen)
$2B or not $2B

Geändert von himitsu (26. Mai 2020 um 14:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#17

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 14:02
beim Login via RDP wird für den Benutzer jeweils das S: verbunden.
Hast du die Möglichkeit es mal testweise auf einem lokalen Laufwerk zu probieren?

Ansonsten sind deine Versionen jeweils schon etwas betagter. Falls du - wie auch wir in der Firma - einen gewissen Grund haben solltest ein Upgrade zu scheuen, bspw. weil das Git-Wire-Protokoll unterstützt werden muß, dann hilft auch eine Aktualisierung.

Die Version in TortoiseGit bezieht sich also auf libgit2 oder gibt's da echt noch ein weiteres installiertes Git? Da einige der Unterbefehle von Git ja als externe Binaries (und Skripte) implementiert sind, könnte das schon das Problem sein. Kannst du hilfsweise mal ein installiertes Git "ausschalten" indem du bspw. das Verzeichnis umbenennst?

Ansonsten auch nochmal probieren Git zu aktualisieren.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 16:15
Der Grund wird wohl eher sein "es läuft ... blos nix kaputt machen".



Nachdem es im neuen Test-Repository ging (#16), hab ich nochmal bissl mit dem Repository selbst rumgespielt,
anstatt weiter bei den Aufrufen der Git-Status-Funktionen rumzuprobieren.

Ich glaub die größten Probleme stammen vom "falschen" Wechsel des Branches
git.exe checkout remotes/origin/dev/acj/14910-bde-stempeleung --
anstatt
git.exe checkout -b dev/acj/14910-bde-stempeleung remotes/origin/dev/acj/14910-bde-stempeleung --

Nach Ersterem das eigenartige Ergebnis
und bei Zweitem scheint es nun zu klappen.


Man soll wohl nicht alles glauben was die vielen Git Cheat Sheets einem sagen, sonst kommt Shitt raus.
https://www.reddit.com/r/git/comment...t_cheat_sheet/
$2B or not $2B

Geändert von himitsu (26. Mai 2020 um 16:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 17:52
Mit Bash versuch ich dann noch bissl rumzuspielen.


Nur nochmal zum Verstandnis.

Wir hatten Subversion mit FinalBuilder drin, und versuchen das Ganze nun auf mehrere Git-Repos umzusiedeln.
Der FB bietet für SVN standardmäßig eine Erweiterung, wo man direkt einige Statusinfos in Variablen schreiben lassen kann.
z.B. der Branch (das Verzeichnis), die Revision, das CommitDatum und von wem
http://help.finalbuilder.com/Index.h...rsion_info.htm

In Bezug auf Git gibt es soeine Status-Auslesefunktion nicht. Das Einzige was es gibt ist "Git Repository Status", was man eine Exception werfen lassen kann, wenn es etwas zu Commiten gibt.
Auch alles andere, wie z.B. "Git Show Commit Logs" bietet keine Rückgaben, die man dann im FB-Script auswerten kann.

Zusätzlich gibt es intelligenter Weise zwar ein "Git Generic" und "Subversion Generic", aber da war man so intelligent, dann man dort zwar Befehl und Parameter "frei" definieren kann, aber auch da gibt es keine Möglichkeit die Ausgabe in eine Variable oder eine Datei umzuleiten (um sie anschließend in eine Variable einzulesen).
http://help.finalbuilder.com/Index.h...ric_action.htm

Da es die Möglichkeit git "DOS"-Komandos auszuführen,
http://help.finalbuilder.com/Index.h...doscommand.htm
https://wiki.finalbuilder.com/displa...+Script+Action
hatte ich nun einfach versucht in einem Batch-Script ein/paar Aufrufe der git.exe zu verwenden, um mir dort die gewünschten Infos in eine Textdatei schreiben zu lassen.

branchname commithash* commitdate
oder, wenn Tag vorhanden
branchname version commithash* commitdate

> version = tag+commits
> * = dirty

also z.B. master 7c8c3e76 2019-11-05 09:27 oder master 19.10.02+37 7c8c3e76* 2019-11-05 09:27 .

Genommen wird das dann, um beim Build-Prozess im FinalBuilder nochmal anzeigen zu lassen was grade kompiliert wird,
sowie in der VersionsRessource der EXE/DLLs und im SlashScreen/InfoDialog des Programms für die Supporter
(menschenverständlich) die Version des Programms und für den Entwickler die Quellen/Versionen der einzelnen Repositories anzuzeigen.



Da war dann bissl stümperhaft, nach etwas rumprobieren, eine Batch entstanden, der man ein Git-Verzeichnis und eine Ziel-Textdatei gibt.
Die funktionierte dann erstmal (beim Testen und Rumspielen), wurde noch bissl kommentiert usw., aber nachdem es im FinalBuilder eingebaut war und nun auf alle Repositories und dessen Submodule losgelassen wurde, da stimmte nichts mehr.

die aktuellen Commit-Daten ... Datum, Name, Kommentar (%root%\fb-git-ver.cmd)
Code:
rem ################################################
rem fb-git-ver.cmd DIR DEST  (für Versionsanzeige im FinalBuilder)
rem # Branch # Branch-References # Autor, Relative, CommitDate # Subject ## Message-Body
rem ## geo, 3 days ago, 2020-04-17 22:46:58 +0200
rem ## HEAD -> master, origin/master, origin/HEAD
rem ## Formular 'DBSQL-Stataments durchsuchen' anpassungen (#194)
rem ## ...
cd /d %1
git rev-parse --abbrev-ref HEAD>%~2
if errorlevel 1 exit 1
git show -s --format=format:"%%D %%n%%an, %%ar, %%ci %%n%%s %%n%%n%%b">>%2
rem "%~dp0_bpl\fart" --c-style %2 \n \r\n -- FART setzt den ErrorLevel (Anzahl der Ersetzungen) ... daher Replace anschließend im FinalBuilder
die Versionsinfo (%root%\fb-git-id.cmd)
Code:
rem ################################################
rem fb-git-id.cmd DIR DEST [name/short]  (für Version.inc und VersionInfo.rc:FileDescription)
rem # master 19.10.02-37-g7c8c3e76* 2019-11-05T09:27:17+01:00
rem ## master 7c8c3e76 2019-11-05 09:27                 (ohne Version-Tag)
rem ## master 19.10.02+37 7c8c3e76* 2019-11-05 09:27    (Version-Tag vorhanden, Short=ohne CommitDate)
cd /d %1
set mode=%~3
if "%mode%"=="short" (
  git describe --tags --always --dirty=*>%~2
  find - %2 >nul
  if errorlevel 1 set mode=
)

git rev-parse --abbrev-ref HEAD>%~2
if errorlevel 1 exit 1
if "%mode%"=="branch" exit /b 0
git describe --tags --always --dirty=*>>%~2
if not "%mode%"=="short" git show -s --format=format:"%%ci">>%~2
rem "%~dp0_bpl\fart" --c-style %2 \n " " -- FART setzt den ErrorLevel (Anzahl der Ersetzungen) ... daher Replace anschließend im FinalBuilder
rem RegexReplace im FB: "-(\d+)-g([0-9a-f]{8})" -> "+$1 $2"
rem RegexReplace im FB: "(\d\d\d\d-\d\d-\d\d)[T ](\d\d:\d\d):\d\d([ ]?[+-]\d\d:\d\d)" -> "$1 $2"
und die eigentliche Arbeit (%root%\fb-work.cmd)
Code:
rem Variable: GitCommit, GitBranch, GitVersion
call %root%\fb-git-ver.cmd "%root%\MAIN" "%root%\fb-ver-commit.txt"
call %root%\fb-git-id.cmd "%root%\MAIN" "%root%\fb-ver-branch.txt" branch
call %root%\fb-git-id.cmd "%root%\MAIN" "%root%\fb-ver-short.txt" short

rem Variable: Temp1 bis Temp4
call %root%\fb-git-id.cmd "%root%\MAIN" "%root%\fb-ver-main.txt"
call %root%\fb-git-id.cmd "%root%\ExternKomponenten" "%root%\fb-ver-extern.txt"
call %root%\fb-git-id.cmd "%root%" "%root%\fb-ver-root.txt"
call %root%\fb-git-id.cmd "%root%\PSQL" "%root%\fb-ver-psql.txt"
$2B or not $2B

Geändert von himitsu (26. Mai 2020 um 18:17 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: GIT-Submodul version auslesen

  Alt 26. Mai 2020, 20:30
PowerShell ist doch gerade auf dem Weg das zeitliche zu segnen, sei Avantgardist und lerne bash [...]
Habe ich die Ironie in deinem Beitrag nicht erkannt oder meinst du das ernst? Falls ja, könntest du das, ggf. in einem anderen Thread, erläutern und auch mit vertrauenswürdigen Quellen belegen?

Mir scheint es eher so, dass Microsoft alles auf PowerShell auslegt, zudem aber immer mehr Unterstützung für andere Betriebssysteme bieten will. Siehe .NET Core und PowerShell 6 bzw. PowerShell 7.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz