2012-01-08 6 views
3

Я хочу выяснить, почему команда git submodule foreach не работает для меня. Я клонировал репозиторий git, который имеет несколько подмодулей. Я хотел сразу же запустить и обновить все подмодули, чтобы вытащить источники подмодулей. Но все, что я пытаюсь мерзавец подмодуль Еогеасп не работает для меня ... Я попробовал несколько вещей:git subodule foreach не работает

git submodule foreach init 
git submodule foreach update 
git submodule foreach update --init 
git submodule foreach --recursive git submodule update --init 

Каждая команда будет выполняться, но без какого-либо выхода ... Если я пойду и INIT/обновлять каждый модуль отдельно (без используя foreach), тогда проблем нет.

Любые идеи?

ответ

5

git submodule init или git submodule update должны работать для всех подмодулей зарегистрированных в .gitmodules, так что это не имеет смысла, чтобы выполнить их для каждых подмодулей.

Если у вас были подмодули внутри подмодулей, git submodule update --recursive позаботился о все подмодулей рекурсивно.

+0

ОК это, безусловно, работал ... поэтому, когда уместно использовать Еогеасп COMAND? –

+0

@ PrimozRome: для любой команды, которую вы хотите использовать на каждом подмодуле, например, в этом примере внешнего скрипта: http://stackoverflow.com/questions/5889246/git-submodule-foreach-executeread – VonC

3

После клона все, что вам обычно нужно сделать, это:

git submodule update --init --recursive 

После этого делается на начальном этапе, вы уронили --init вариант.

Параметр init - это часть команды, которая копирует url, указанный в файле .gitmodules, в конфигурацию репозитория подмодуля. Возможно, вы не захотите это сделать, если используете конкретный удаленный выбор, и проект переместится на тот, который вы не хотите использовать. Типичным примером этого является то, что вы предпочитаете использовать свою вилку проекта в GitHub, а точки репо верхнего уровня - основную.

2

Вы должны запустить:

git submodule init 
git submodule update 

-

Вам нужен .gitmodules файл в корне Ф.О. дерева, это выглядит следующим образом.

[submodule "LiveReload/Compilers"] 
     path = LiveReload/Compilers 
     url = git://github.com/livereload/livereload-plugins.git 
[submodule "Shared/libs/fsmonitor"] 
     path = Shared/libs/fsmonitor 
     url = git://github.com/andreyvit/fsmonitor.c.git 
[submodule "js"] 
     path = js 
     url = git://github.com/livereload/livereload-js.git 

Вот как результат должен выглядеть на основе выше:

Nicks-MacBook:LiveReload2 admin$ git submodule init 
Submodule 'LiveReload/Compilers' (git://github.com/livereload/livereload-plugins.git) registered for path 'LiveReload/Compilers' 
Submodule 'Shared/libs/fsmonitor' (git://github.com/andreyvit/fsmonitor.c.git) registered for path 'Shared/libs/fsmonitor' 
Submodule 'js' (git://github.com/livereload/livereload-js.git) registered for path 'js' 
Nicks-MacBook:LiveReload2 admin$ git submodule update 
Cloning into 'LiveReload/Compilers'... 
remote: Counting objects: 7571, done. 
remote: Compressing objects: 100% (5446/5446), done. 
remote: Total 7571 (delta 2326), reused 6733 (delta 1488) 
Receiving objects: 100% (7571/7571), 7.80 MiB | 2.73 MiB/s, done. 
Resolving deltas: 100% (2326/2326), done. 
Submodule path 'LiveReload/Compilers': checked out 'd770710edc2362caf4ed9adf303da1edc9e6e494' 
Cloning into 'Shared/libs/fsmonitor'... 
remote: Counting objects: 132, done. 
remote: Compressing objects: 100% (79/79), done. 
remote: Total 132 (delta 73), reused 112 (delta 53) 
Receiving objects: 100% (132/132), 23.29 KiB, done. 
Resolving deltas: 100% (73/73), done. 
Submodule path 'Shared/libs/fsmonitor': checked out '1290027aea3a8e3f7fe06e3c228a16240c0fc17f' 
Cloning into 'js'... 
remote: Counting objects: 745, done. 
remote: Compressing objects: 100% (413/413), done. 
remote: Total 745 (delta 301), reused 703 (delta 259) 
Receiving objects: 100% (745/745), 864.22 KiB | 820 KiB/s, done. 
Resolving deltas: 100% (301/301), done. 
Submodule path 'js': checked out '6aa86b01479c3aad785e9623f39cfcde2b8615f 
Смежные вопросы