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
 
Benutzerbild von himitsu
himitsu

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

AW: GIT-Submodul version auslesen

  Alt 22. Mai 2020, 13:18
Leider hilft das auch nicht und ich sehe da garkeinen Unterschied.
Es kommen immernoch die Daten vom übergeordneten Repository raus,
also Revision und Datum, als das Submodule hinzugefügt wurde, anstatt Revision und Datum der letzten Änderung im Submodul.

Code:
@echo off
setlocal EnableDelayedExpansion

REM cd /d %1

set gitdir=
if not exist ".git" goto 1
if exist ".git/config" goto 1
  for /f "delims=" %%x in (.git) do ( set "temp=%%x" & goto 2 )
  :2
  set temp=%temp:/=\%
  if "%temp:~0,8%" == "gitdir: "  if exist "%temp:~8%"  set gitdir=--git-dir=%temp:~8%
:1
echo %gitdir%

echo ##################
git rev-parse --abbrev-ref HEAD
git describe --tags --always --dirty=*
git show -s --format=format:"%%ci"

echo ##################
git %gitdir% rev-parse --abbrev-ref HEAD
git %gitdir% describe --tags --always --dirty=*
git %gitdir% show -s --format=format:"%%ci"

if not "%gitdir%" == "" (
  echo ##################
  echo -- & REM git rev-parse --submodule --abbrev-ref HEAD
  echo -- & REM git describe --submodule --tags --always --dirty=*
  git show --submodule=short -s --format=format:"%%ci"

  echo ##################
  echo -- & REM git %gitdir% rev-parse --submodule --abbrev-ref HEAD
  echo -- & REM git %gitdir% describe --submodule --tags --always --dirty=*
  git %gitdir% show --submodule=short -s --format=format:"%%ci"
)

echo ##################
pause
Neben dem --git-dir stand in der Doku auch ein --work-tree, aber auch wenn ich zusätzlich --work-tree=. anhänge, kommt das Selbe raus.

Vom Hauptverzeichnis des Submodule auf eine drinliegende Datei angewendet, also
-- .svn angehängt, ergibt "not in workingtree"
-- eineda.tei angehängt, ergibt keine Fehlermeldung, aber dafür eine leere Ausgabe (nichts) und für einen allgemeinen Code muss ich dann auch erst eine Datei im Verzeichnis suchen lassen.

Selbst wenn ich erstmal komplett raus springe und beide Pfade explizit angebe, wird die Info des übergeordneten Repository genommen.
cd /d C:\
git --git-dir=D:\RootDir\.git\modules\MySubmodule --work-tree=D:\RootDir\MySubmodule show
Aber wenn ich hier das übergeordnete Repository zerstöre, indem ich das .git-Verzeichnis umbennene, dann funktioniert es.
git --git-dir=D:\RootDir\__.git\modules\MySubmodule --work-tree=D:\RootDir\MySubmodule show
bzw. git --git-dir=..\__.git\modules\MySubmodule ohne vorheriges CD
Nur ich glaub das ist keine super Lösung, falls was schief geht und anschließend das Verzeichnis nicht wieder zurück umbenannt wird.
Oder wenn z.B. Tortoise-Git noch offen ist und das Verzeichnis sich nicht umbenennen lässt.


[Info]
Mit dem DelayedExpansion und SubStrings in der ( ) des FOR gab es Probleme (die Variablen mit ! wurden nicht aufgelöst, wenn ein ~ drin ist, und mit % sind sie nicht delayed),
aber zum Glück gibt es ja noch as gute alte GOTO.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Mai 2020 um 14:13 Uhr)
  Mit Zitat antworten Zitat
 


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 06:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz