Исключить подмодуль из подмодуля - PullRequest
0 голосов
/ 25 июня 2019

У меня есть git repo, где я связываю некоторые из моих зависимостей, используя подмодули git внутри extern/ dir. Скажем, у меня есть зависимость A как подмодуль, расположенный в extern/A. Теперь A сам имеет некоторые зависимости как подмодули git. В репо A, то есть, например. A/test/data/X.

Теперь, когда я клонирую свой репо и запускаю git submodule update --init --recursive, чтобы построить его на CI-сервере или где-то еще, я бы хотел, чтобы указанная выше команда игнорировала exter/A/test/data/X, потому что это как 1 ГБ данных что я не хочу.

Однако у моих других зависимостей есть несколько полезных подмодулей, поэтому я не могу просто пропустить --recursive. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 25 июня 2019

Один из возможных способов сделать это - добавить путь к подмодулю, который вы хотите игнорировать, в файл .gitignore основного репозитория.В вашем случае это будет

#.gitignore
extern/A/test/data/X/*

Также, чтобы отследить его, вы можете сделать это,

git rm -r --cached extern/A/test/data/X/

ПРИМЕЧАНИЕ: Я не проверял его, поэтому, пожалуйста, поэкспериментируйте с клоном вашего проекта

В качестве альтернативы, вы можете использовать переменную submodule.<name>.update config, чтобы указать, какой подмодуль должен обновляться, как упомянуто здесь Как исключить определенный подмодуль gitиз обновления?

git -c submodule."extern/A/test/data/X".update=none submodule update --init --recursive

Приведенная выше команда отключает обновление для подмодуля "extern / A / test / data / X"

...