2013-07-25 16 views
6

Ist es möglich, Submodule für ein Repository mit nur dem Arbeitsverzeichnis herunterzuladen?Download git Submodule für Tarball

Wenn ich einen Tarball eines Repositorys von GitHub herunterlade, das entspricht einem flachen Klon ohne den Ordner .git, ist es überhaupt möglich, die Submodule in das Arbeitsverzeichnis "herunterzuladen"?

Ich versuchte git init && git submodule update --init, aber dies initialisiert weder noch aktualisiert es die Submodule. Die Datei .gitmodules befindet sich im aktuellen Verzeichnis.

aktualisieren: Einige Hintergrundinformationen über die Frage: Wir möchten tarballs verwenden für Endlager bei Travis CI Check-out, aber einige Leute benutzen git Submodule. "Verwenden Sie keine Git Submodule" wäre daher keine gute Antwort, aber die Antwort muss auch nicht wirklich etwas Wartungsfähiges sein. Ich möchte nur einen Ordner, der den Code ausgecheckt hat und mit den Submodulen initialisiert, es gibt keine Notwendigkeit für irgendetwas, das es mir erlaubt, später weitere Änderungen herunterzuziehen.

+0

Warum sollte nicht ein 'git Submodul Update --init --recursive --force' arbeiten werden? Es sollte diese Submodule laden (aber mit ihrer vollen Historie). Beachten Sie, dass [git1.8.4 einen --depth für einen seichten Submodulklon hinzufügt] (http://stackoverflow.com/a/17692710/6309). – VonC

+0

@VonC Wenn ich nur wüsste. Dieser Befehl tut gar nichts für mich. Keine Fehler, aber es gibt "sofort" ohne irgendeine Ausgabe zurück. – henrikhodne

+0

Was ist der Inhalt Ihrer '.gitmodules' Datei? Und welche Version von Git verwendest du? – VonC

Antwort

2

einen wget/tar Ansatz Kombination mit einem git init wird dir nicht helfen, Submodule initialisieren:

Alles ist untracked nach dem git init.

Sie brauchen, um alles zu addieren und zu begehen, vor:

git submodule update --init --recursive --force 

Das git submodule Befehl wird dann „Arbeit“, aber nur leere Verzeichnisse erstellen.
Das ist, weil die TAR-Datei nicht die special entries (160000) von git submodule add erstellt enthält.

Sie müssen diese Submodule neu erklären:

C:\prog\git\ReactiveCocoa-2.0-development>git submodule add --name xcconfigs https://github.com/jspahrsummers/xcconfigs.git external\xcconfigs 
Cloning into 'external\xcconfigs'... 
remote: Counting objects: 312, done. 
remote: Compressing objects: 100% (229/229), done. 
Receal 312 (delta 87), reused 306 (delta 82) 
Receiving objects: 100% (312/312), 64.51 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (87/87), done. 
+0

Dies funktioniert immer noch nicht für mich. Ich benutze die gleichen Befehle wie der oben im Kommentar, mit 'git add -A. && git commit -m "beginne alles" 'unmittelbar nach' git init'. – henrikhodne

+0

@henrikhodne Ich habe gerade meine Antwort bearbeitet. – VonC

+0

Danke, es sieht so aus, als müssten wir die '.gitmodules' Datei analysieren und alles einlesen. Ich habe auf etwas etwas Automatisiertes gehofft, aber ich denke, es wird funktionieren. – henrikhodne

Verwandte Themen