Greifen Sie automatisch auf Git Submodule über ssh oder https zu

9

Frage:
Gibt es eine Möglichkeit, git Submodule über dieselbe Methode (ssh oder https) als Haupt-Repository automatisch auszuprobieren?

Hintergrund:

Wir haben ein nicht-öffentliches gitlab-Repository ( main ), das ein Submodul ( utils ) hat, das auch als nicht-öffentliches gitlab-Repository auf demselben Server gehostet wird. Auf diese Repositories kann entweder über ssh oder https zugegriffen werden:

Beide Varianten erfordern offensichtlich verschiedene Formen der Authentifizierung und abhängig vom Client-Computer und dem Benutzer wird das eine oder andere bevorzugt.

Für das Top-Level-Repository ( main ) ist das kein Problem, da jeder die Methode wählen kann, die er bevorzugt, aber für das Untermodul hängt dies von der .gitmodules -Datei ab und ist daher (zunächst) die für alle gleich.
Jetzt, anstatt dass jeder die .gitmodules-Datei an das anpassen muss, was sie bevorzugen und sicherstellen, dass sie diese Änderungen nicht versehentlich festschreibt, wäre es nett, wenn es einen Weg gäbe, den Server und den Repo-Pfad zu spezifizieren dieselbe Methode, die für das Hauptrepo verwendet wird, oder etwas, das in gitconfig eingestellt werden kann.

    
MikeMB 28.11.2016, 10:21
quelle

1 Antwort

14

Ich habe dieses Problem endlich gelöst, indem ich die Submodul-URL als relativen Pfad angegeben habe :

Sagen wir also, Ihr Haupt-Git-Repository ist erreichbar

  • entweder über https://gitlabserver.com/my/path/main.git
  • oder über [email protected]:my/path/main.git

Und die Datei .gitmodules sieht folgendermaßen aus:

%Vor%

Das würde bedeuten, dass selbst wenn Sie die Hauptanwendung über ssh auschecken, die Submodul-Utils immer noch über https erreichbar wären.

Sie können jedoch den absoluten Pfad durch einen relativen wie folgt ersetzen:

%Vor%

und ab jetzt

  • entweder git clone --recursive https://gitlabserver.com/my/path/main.git
  • oder git clone --recursive [email protected]:my/path/main.git

um die gesamte Repository-Struktur zu erhalten, wie immer Sie wollen. Offensichtlich funktioniert das nicht in Fällen, in denen die relativen SSH- und HTTPS-Pfade nicht identisch sind, aber zumindest für Gitlab-gehostete Repositories ist dies der Fall.

Dies ist auch praktisch, wenn Sie (aus welchen Gründen auch immer) Ihre Repository-Struktur an zwei verschiedenen Remote-Standorten spiegeln.

    
MikeMB 19.06.2017, 12:00
quelle

Tags und Links