Как избежать подмодулей при циклическом просмотре всего списка подмодулей - PullRequest
0 голосов
/ 20 декабря 2018

У нас имеется большое количество подмодулей, и мы хотели бы просмотреть все из них, используя git submodule foreach git <command>.

. Что происходит, так как 1 или 2 из этих подмодулей не нуждаются в этой команде для использования наих, поэтому мне было интересно, если бы был способ избежать зацикливания этих ранее указанных подмодулей.

1 Ответ

0 голосов
/ 20 декабря 2018

... Мне было интересно, может ли быть способ избежать зацикливания этих ранее указанных подмодулей.

Нет, это не так.Но git submodule foreach запускает произвольную команду оболочки , с некоторыми экспортированными переменными, как описано в документации :

foreach [--recursive]

Оценивает произвольную команду оболочки в каждом извлеченном подмодуле.Команда имеет доступ к переменным $name, $sm_path, $displaypath, $sha1 и $toplevel: $name - это название соответствующего раздела подмодуля в .gitmodules, $sm_path - это путь кподмодуль, записанный в непосредственном суперпроекте, $displaypath содержит относительный путь от текущего рабочего каталога до корневого каталога подмодуля, $sha1 - это фиксация, записанная в непосредственном суперпроекте, а $toplevel - абсолютный путь кверхний уровень непосредственного суперпроекта.Обратите внимание, что во избежание конфликтов с $PATH в Windows переменная $path теперь является устаревшим синонимом переменной $sm_path....

(Я внес несколько небольших изменений в директиву форматирования, но текст должен совпадать, более или менее. Ваша версия Git может иметь более старое $path имя, чем $sm_path,в зависимости от возраста вашего Git. Проверьте документацию вашего Git, чтобы быть уверенным: git help submodule распечатает вышеперечисленное, как часть полной документации.)

Поскольку у вас есть доступ квся эта информация используется .Выберите тот, который проще всего проверить в вашей ситуации, и пропустите выполнение неприменимых команд.Не просто слепо беги git <em>foo</em>;используйте if somecondition; then git <em>foo</em>; fi или аналогичный.

...