Установите подмодуль Git на мелкий клон и редкую проверку?
В большинстве вендоров Objective-C (например, facebook-ios-sdk
) вы должны скопировать определенный подмножество своих файлов-репо/dirs в проект Xcode. Одна из проблем заключается в том, что вы не знаете, какая версия кода поставщика у вас есть. Другое дело, что если вы вносите изменения в код поставщика, вам нелегко внести свои изменения через Git.
В качестве решения я хочу добавить каждую библиотеку поставщиков в качестве подмодуля Git моего проекта репо с некоторыми дополнительными настройками (скажем, в файле .gitmodules
). Таким образом, если другой человек клонирует мой проект и делает git submodule update --init
, их репо и подмодули будут иметь такое же состояние, как мое, потому что они будут использовать те же настройки по умолчанию, что и я:
- Редкая проверка: проверяйте только определенные файлы подмодуля.
- Неглубокий клон: только клонировать определенный SHA1 подмодуля.
Как установить вышеуказанные настройки для подмодуля Git?
Ответы
Ответ 1
Вы можете делать редкие проверки подмодулей так же, как нормальный разреженный контроль. Просто запомните, что файл sparse-checkout
для каждого модуля находится в .git/modules/<mymodule>/info/
. Но, как обсуждалось в git 1,7 редкой функции проверки, разреженные проверки - это именно то, что: checkouts. Вы не можете перемещать файлы или обмениваться настройками.
Ответ 2
С git1.8.4 (июль 2013 г.), в дополнение git мелкое обновление для subodule (git submodule update --depth 1
), теперь у вас может быть пользовательское обновление:
В дополнение к выбору "rebase, merge или checkout-detach", "обновление подмодуля" может позволить использовать пользовательскую команду для обновления рабочего дерева подмодулей с помощью переменной конфигурации "submodule.*.update
".
См. commit 6cb5728c43f34a7348e128b44b80d00b9417cb19:
Пользователи могут установить submodule.$name.update
в '!command
', что приведет к запуску 'command
' вместо checkout/merge/rebase.
Это позволяет пользователю более тонко контролировать процесс обновления.
Подписано: Chris Packham <[email protected]>
Это означает, что вы можете использовать версию command
, которую вы можете использовать для любого обновления подмодуля (через параметр submodule.$name.update
).
Это script может сделать разреженный выезд, если вы хотите.
Обновление августа 2016 года (3 года спустя)
С git 2.10 (Q3 2016) вы сможете сделать
git config -f .gitmodules submodule.<name>.shallow bool
Подробнее см. "Git подмодуль без лишнего веса".
Ответ 3
Субмодулы не могут выполнять часть репо. Вы должны проверить слияние поддерева.