Git-Submodule automatisch hinzufügen (.gitmodules)

Lesezeit: 4 Minuten

Benutzeravatar von Synxis
Synchronisierung

Ich habe ein Repo mit mehreren Submodulen. Ich möchte einige andere hinzufügen, und der schnellste Weg für mich ist die Verwendung von .gitmodules (was meiner Meinung nach jede Art von Submodulverwaltung zulassen sollte).

Wenn Sie diese Datei jedoch bearbeiten und Submodule hinzufügen, müssen Sie nach a git submodule init nichts wird hinzugefügt (außer den Submodulen, die bereits vor der Änderung vorhanden waren).

Gibt es eine Lösung, um ein Submodul hinzuzufügen, ohne es zu durchlaufen? git submodule add (dh nur durch Bearbeiten der .gitmodules Datei und dann git submodule update --init) ?

Das heißt, der folgende Workflow sollte automatisch das Untermodul “foo/bar“:

Add the following to .gitmodules:
    [submodule "foo/bar"]
        path = foo/bar
        url = https://example.com/foo.git

Run the following command after saving:
    git submodule init
    git submodule update

Expected result:
    submodule 'foo/bar' automatically gets added
    it is also updated (the update command)

  • Wenn du schreibst git submodule add Es ist einfach, den neuen Eintrag zu den .submodules-Dateien hinzuzufügen, also ist das, was Sie beschrieben haben, korrekt und es sollte für Sie funktionieren. deshalb nach dem add du musst laufen init & update

    – CodeWizard

    16. Juli 2014 um 10:27 Uhr


  • Nicht verwenden git submodule add führt dazu, dass das Modul für mich (leider) nicht hinzugefügt wird … Wenn Sie darüber nachdenken, ist Git in der Lage, Tausende von Änderungen in vielen Dateien zu verfolgen, aber völlig verloren, wenn es um 3 hinzugefügte Zeilen geht .gitmodules

    – Synxis

    16. Juli 2014 um 10:27 Uhr


  • Ich habe meine Antwort entsprechend Ihrem Update aktualisiert, Sie können dies nicht manuell tun, es sei denn, Sie wissen, wie Sie das Modulverzeichnis unter erstellen .git Mappe.

    – CodeWizard

    16. Juli 2014 um 10:46 Uhr

  • Führen Sie diesen Befehl aus und sehen Sie sich die Ergebnisse an GIT_TRACE=2 git submodule add [email protected]....

    – CodeWizard

    16. Juli 2014 um 10:47 Uhr

  • Ziemlich verrückt, dass dies in einem textorientierten Tool wie diesem nicht möglich ist ^^

    – xeruf

    24. Mai 2022 um 7:50 Uhr

Benutzeravatar von Tomáš Hübelbauer
Tomáš Hübelbauer

Wenn Sie ein Git-Submodul hinzufügen, erstellt Git .gitmodules Datei und für ein Submodul namens git-submodule werde so etwas hinzufügen:

[submodule "git-submodule"]
    path = git-submodule
    url = https://github.com/TomasHubelbauer/git-submodule

Dasselbe kommt hinzu .git/config nach dem vorhandenen Inhalt in dieser Datei.

Ein nach dem Submodul benannter Ordner für das Submodul wird erstellt .git/modules. Dieser Ordner ist nahezu identisch mit dem der .git Verzeichnis des eigentlichen Submodul-Repositorys, aber es enthält nicht das eigentliche objects (Stattdessen werden die Submoduldaten in ihr Verzeichnis ausgecheckt und ihre Metadaten sind hier).

Das bedeutet, dass Sie theoretisch ein Submodul manuell hinzufügen könnten, ohne es zu verwenden git submodule add, aber Sie müssten alle diese Konfigurationsdateien neu erstellen. Aber man kann sich immer noch vorstellen, das Submodul-Repository in ein separates Verzeichnis zu klonen und es zu kopieren .git rüber zu diesem. Dass könnte Arbeit.

Das Hinzufügen eines Submoduls ändert jedoch auch den Index, .git/indexalso müssten Sie auch diesen Hash manuell aktualisieren, und an diesem Punkt implementieren Sie Git neu, aber manuell.

Daher glaube ich nicht, dass es auch nur annähernd praktikabel ist, ein Git-Submodul von Hand hinzuzufügen.

  • Danke für deine Antwort. Die Frage war jedoch nicht wirklich, wie man ein Submodul von Hand hinzufügt, sondern wie man das macht .gitmodule Datei die Meister der Submodulkonfiguration, d. h. Sie bearbeiten und geben sie ein git submodule update um das Repo anzupassen. Anscheinend ist das nicht möglich 🙁

    – Synxis

    12. Dezember 2019 um 14:44 Uhr

  • Ah, verstehe, das habe ich falsch verstanden. Ich wünschte auch, das wäre so!

    – Tomáš Hübelbauer

    12. Dezember 2019 um 16:18 Uhr

Benutzeravatar von CodeWizard
CodeWizard

Ja, wie Sie beschrieben haben, sobald Sie ein Submodul hinzugefügt haben, wird es zu Ihrem hinzugefügt .gitsubmodule Datei.

Aber wenn Sie nicht genau wissen, was Sie tun, ist es viel besser, den CLI-Befehl zu verwenden, da es etwas geben könnte, mit dem Sie nicht vertraut sind, wie:

Sobald Sie Ihre Submoduldatei bearbeitet haben, müssen Sie Folgendes ausführen:

git submodule init
git submodule update

Das manuelle Hinzufügen funktioniert nicht.

Führen Sie das Add-Submodul aus und beobachten Sie die .git Ordner ändert. Sie sehen einen neuen Ordner mit dem Namen module mit Ihrem Submodulnamen.

Aus diesem Grund sollten Sie dies nicht manuell tun.

  • Nun, meine Frage ist nicht das Hinzufügen über die Befehlszeile. Was ich möchte ist git submodule init um nicht bereitgestellte Module, die in gitmodules vorhanden sind, automatisch hinzuzufügen. Das heißt, dass die gitmodules-Dateien bestimmen, wie git Submodule verwaltet (und nicht umgekehrt). Ist es möglich ?

    – Synxis

    16. Juli 2014 um 10:18 Uhr

1440470cookie-checkGit-Submodule automatisch hinzufügen (.gitmodules)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy