используя "git submodule foreach", можете ли вы пропустить список подмодулей? - PullRequest
0 голосов
/ 08 октября 2019

Допустим, у меня есть 10 субмул:

module/1
module/2
module/3
module/4
module/5
module/6
module/7
module/8
module/9
module/10

, где module/ - репо верхнего уровня.

Я хочу сделать git submodule foreach 'git status', но я не хочусделать это для подмодулей 4, 6 и 7.

Есть ли способ сделать это, что-то вроде:

git submodule foreach --exclude="4 6 7" 'git status'

Я пытался сделать это внутри командыблокировка с использованием

git submodule foreach '
    if [[ $list_of_ignores =~ *"$displayname"* ]] ; then echo ignore; fi
'

обновление - удалено --exclude="4 6 7", которое случайно там было

Но я получаю ошибки, сообщающие eval [[: not found - Я предполагаю, что это потому, что этоиспользует / bin / sh вместо / bin / bash? - не уверен ...

1 Ответ

1 голос
/ 08 октября 2019

Как сказано в документации, foreach выполняет команды оболочки,

foreach [--recursive] <command>
    Evaluates an arbitrary shell command in each checked out submodule. The 
    command has access to the variables $name, $sm_path, $displaypath, $sha1
    and $toplevel

, поэтому используйте оболочку:

 git submodule foreach 'case $name in 4|6|7) ;; *) git status ;; esac'

Я пробовал это. Оно работает. Я пытался сделать то, что ты сказал, что попробовал. Это не дает ошибку, которую вы говорите, Git отклоняет ее из-за плохой опции. Пожалуйста, перестаньте подделывать доказательства в ваших вопросах.

...