Как исключить конкретный подмодуль git из обновления? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть список подмодулей в .gitmodules. Я хочу скачать конкретный подмодуль, т.е. grpc, только если в конфигурационном файле включена какая-либо опция, включенная как true. Поскольку grpc иногда не требуется для моей сборки. Все подмодули находятся в стороннем каталоге. Итак, .gitmodules похож на:

[submodule "third-party/libzip"]
        path = third-party/libzip
        url = https://github.com/nih-at/libzip.git
[submodule "third-party/sqlite"]
    path = third-party/sqlite
    url = https://github.com/mackyle/sqlite.git
    branch = sqlite-3.23.1
[submodule "third-party/grpc"]
    path = third-party/grpc
    url = https://github.com/grpc/grpc.git

Также есть способ исключить подмодуль специально при выполнении команды:

git submodule update --init --recursive

Я бы хотел исключить grpc и подмодули в grpc при обновлении подмодуля. Что-то вроде:

git submodule update --init --recursive "exclude third-party/grpc"

1 Ответ

0 голосов
/ 05 сентября 2018

Из справки Git:

обновление

Обновите зарегистрированные подмодули, чтобы они соответствовали ожиданиям суперпроекта путем клонирования отсутствующих подмодулей и обновления рабочее дерево подмодулей. «Обновление» может быть выполнено несколькими способами в зависимости от параметров командной строки и значения submodule..update. переменная конфигурации поддержанный Процедуры обновления:

...

...

Если опция не указана, а submodule.<name>.update не установлен, подмодуль не обновляется.

Итак, установите update = none в файле конфигурации. Вы также можете явно указать пути после -- для обновления только определенных подмодулей. Чтобы сделать это на лету и не изменять свой файл конфигурации, @PrashantShubham отмечает, что вы можете:

git -c submodule."third-party/grpc".update=none submodule update --init --recursive
...