AW: GIT-Submodul version auslesen
Mit einem
Delphi-Quellcode:
, da hat sich nicht geändert.
git -C S:\rootdir\SMODUL show ...
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"' |
AW: GIT-Submodul version auslesen
Zitat:
Zitat:
Zitat:
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. |
AW: GIT-Submodul version auslesen
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. :stupid: |
AW: GIT-Submodul version auslesen
Zitat:
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. |
AW: GIT-Submodul version auslesen
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. |
AW: GIT-Submodul version auslesen
Liste der Anhänge anzeigen (Anzahl: 3)
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) |
AW: GIT-Submodul version auslesen
Zitat:
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. |
AW: GIT-Submodul version auslesen
Der Grund wird wohl eher sein "es läuft ... blos nix kaputt machen". :stupid:
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
Delphi-Quellcode:
git.exe checkout remotes/origin/dev/acj/14910-bde-stempeleung --
anstatt
Delphi-Quellcode:
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/ |
AW: GIT-Submodul version auslesen
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.
Delphi-Quellcode:
oder
master 7c8c3e76 2019-11-05 09:27
Delphi-Quellcode:
.
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. :wall: die aktuellen Commit-Daten ... Datum, Name, Kommentar (%root%\fb-git-ver.cmd)
Code:
die Versionsinfo (%root%\fb-git-id.cmd)
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 'DB / SQL-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
Code:
und die eigentliche Arbeit (%root%\fb-work.cmd)
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"
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" |
AW: GIT-Submodul version auslesen
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 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