2013-07-25 3 views
6

Можно ли загрузить подмодули для репозитория только с рабочим каталогом?Загрузить git subodules для tarball

Если я загружаю tarball из репозитория из GitHub, что эквивалентно мелкому клону без папки .git, можно ли вообще «загрузить» подмодули в рабочий каталог?

Я пробовал git init && git submodule update --init, но это не инициализирует и не обновляет подмодули. Файл .gitmodules находится в текущем каталоге.

Update: Некоторые более фона на вопрос: Мы хотели бы использовать тарболы для проверки из хранилищ в Travis CI, но некоторые люди используют Git подмодулей. «Не использовать подмодули Git», следовательно, не будет хорошим ответом, но на самом деле ответ не должен быть чем-то поддерживаемым. Мне просто нужна папка, в которой был проверен код, и с инициализированными подмодулями нет необходимости в чем-либо, что позволит мне позже сменить другие изменения.

+0

Почему бы не 'обновление подмодуля мерзавец --init --recursive --force' работать? Он должен загружать эти подмодули (но с их полной историей). Обратите внимание, что [git1.8.4 добавит -depth для клонирования неглубоких подмодулей] (http://stackoverflow.com/a/17692710/6309). – VonC

+0

@ VonC Если бы я знал. Эта команда ничего не делает для меня. Нет ошибок, но он возвращает «мгновенно» без вывода. – henrikhodne

+0

Каково содержимое вашего файла '.gitmodules'? А какая версия git вы используете? – VonC

ответ

2

Сочетание Wget/деготь подхода, с git init не поможет инициализировать подмодуль:

Всего неотслеживаемая после git init.

Вам нужно добавить и совершить все, перед тем:

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

Это git submodule команда будет «работать», но создавать только пустые каталоги.
Это потому, что tar-файл не содержит special entries (160000), созданный git submodule add.

Вам нужно повторно объявить этот подмодуль:

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

Это все еще не работает для меня. Я использую те же команды, что и gist, в комментарии выше, с 'git add -A. && git commit -m "передать все" сразу после 'git init'. – henrikhodne

+0

@henrikhodne Я только что отредактировал свой ответ. – VonC

+0

Спасибо, похоже, нам нужно проанализировать файл '.gitmodules' и прочитать все. Я надеялся на что-то чуть более автоматизированное, но, думаю, это сработает. – henrikhodne

Смежные вопросы