Wie kann ich ein Submodul so einstellen, dass es auf ein bestimmtes Commit zeigt, ohne es zu holen?

8

Ich schreibe einen Dienst, der das Commit aktualisiert, auf das jedes Submodul in einem Superprojekt zeigt. Meine naive Art, dies zu tun, wäre, git fetch in einem Submodul, git reset --hard <hash> , auszuführen und dann das Submodul hinzuzufügen und zu committen.

Ich möchte den Schritt git fetch überspringen und das Submodul einfach zwingen, auf einen bestimmten Hash zu verweisen, um die Leistung zu erhöhen (Überspringen der Objekte und Speicherplatz) und um Commits zu verarbeiten, die möglicherweise nicht mehr existieren Sie werden sowieso nicht abgeholt (wenn sie durch einen Kraftstoß gestoßen wurden).

    
ide 04.11.2015, 05:52
quelle

1 Antwort

8

Die Lösung besteht darin, direkt in den Git-Index zu schreiben, was für Submodule eigentlich einfach ist. Mit Git 2:

git update-index --cacheinfo 160000,<Git hash of the submodule's tree>,<path to the submodule>

Also zum Beispiel, wenn Ihre Projektverzeichnisstruktur wie folgt aussieht:

%Vor%

Um das Submodul so zu aktualisieren, dass es auf commit 2764a900748fbed7453f5839cb983503cee346d2 verweist, würden Sie Folgendes ausführen:

git update-index --cacheinfo 160000,2764a900748fbed7453f5839cb983503cee346d1,submodule

Und schließlich wie gewohnt mit git commit weitermachen.

    
ide 06.11.2015, 21:15
quelle

Tags und Links