Добавление подмодуля git, содержащего другой подмодуль?

Я работаю над проектом в одном репозитории git (A), который включает другой репозиторий git (B), который, в свою очередь, включает третий репозиторий git (C). В A я добавил B через:

git submodule add https://github.com/blt04/sfDoctrine2Plugin.git plugins/sfDoctrine2Plugin

Щелкните здесь, и вы увидите, где B ссылается на C: https://github.com/doctrine/doctrine2

После добавления моего подмодуля git моя папка plugins/sfDoctrine2Plugin/lib/vendor/doctrine (должна содержать C) пуста. Я попытался сделать git submodule update --recursive в соответствии с этим ответом StackOverflow, но он по-прежнему не импортировал файлы по этому пути. Я не понимаю, что здесь делать.


person Matt Huggins    schedule 05.01.2011    source источник
comment
вы также можете повторно клонировать репозиторий с помощью git clone --recursive ‹URL›   -  person Trevor Hickey    schedule 28.01.2014


Ответы (1)


Вам нужно сделать git submodule update --init --recursive. Проблема здесь в том, что подмодуль C никогда не инициализируется.

person Lily Ballard    schedule 05.01.2011
comment
Вау, это сработало. Я не знаю, почему git недостаточно умен, чтобы сделать это в первую очередь. Ну что ж, спасибо! - person Matt Huggins; 05.01.2011
comment
git предполагает, что если вы не инициализировали подмодуль, это потому, что он вам не нужен. Это сбивает с толку новичков, но может быть чрезвычайно полезно в случаях, когда подмодуль является необязательным. - person Lily Ballard; 05.01.2011
comment
Меня всегда удивляло, что вы не можете просто сделать: git submodule add --recursive ‹git path›. - person Eric apRhys; 08.11.2014