2015-06-29 1 views
1

Есть ли способ связать cmds с подмодулями в вашем репо? Я ищу встроенные методы, поскольку мне нужно, чтобы это было портативным и без дополнительных установок.Git - Chaining cmds (т. Е. Ls-файлы) для подмодулей

В моем случае у меня есть конвейер рабочего процесса, основанный на ls-файлах (и журнал) и должен иметь возможность видеть файлы, которые соответствуют определенным условиям, даже если они находятся в подмодулях.

т.е.

git ls-files some/file/path/above/my/submodules/globed-file 

только показывает файлы в текущем репо и игнорирует файлы подмодуля в.

+0

Примечание: Git 2.11 скоро добавит 'git ls-files -recurse-subodules'. Я отредактировал свой ответ. – VonC

+0

@ VonC Спасибо за обновление – SushiHangover

ответ

4

июня 2015: Вы можете попытаться выполнить вашу команду в каждом из подмодулей, используя git submodule foreach:

git submodule --quiet --recursive foreach "git ls-files yourFile" 

Один из субмодуля будет возвращать что-то, если этот файл присутствует в нем.

Обратите внимание, что с Git 2.11+ (Q4 2016), вы можете использовать вместо:

git ls-files --recurse-submodules 

См "finding a list of files (e.g. using git ls-files) including submodules".

+0

Спасибо, я использовал foreach на опции подмодуля, он, конечно, не включает процесс в файлы git repo, содержащие эти подмодули. Это единственный ответ, который я мог бы придумать, я просто должен запустить несколько cmds и поместить объединение этих результатов в конвейер bash. – SushiHangover