Допустим, у меня есть несколько автономных подпроектов с собственным pom.xml и git-repo. Но теперь я собираю их вместе в проект X.
project X
- sub A
- sub B
- sub C
Я хочу сгенерировать все подпроекты в X. Я делаю это с помощью pom.xml, в котором проекты от A до C представлены в виде модулей. Поколение X будет обобщать все проекты. Работает отлично!
Есть ли способ обобщить и git-repos? Коммит в X должен выполнять коммит в каждом проекте. То же самое для обновления, ...





В git нет понятия «подпроекты», как в Maven.
Чтобы выполнить то, что вы хотите, у меня на моей машине настроена функция (bash):
git-all ()
{
find ~/workspace -name .git -type d -print -execdir git "$@" \;
}
Команда поиска:
Итак, я могу сделать что-то вроде:
git-all commit -m "my commit"
git submodule предоставляет утилиту для перебора всех подмодулей:
Команда для выполнения git commit в каждом подмодуле текущего проекта выглядит следующим образом:
git submodule foreach "git commit"
Для удобства я сделал простой сценарий bash, который запускает произвольную команду в текущем проекте плюс все его подмодули. Таким образом, мне не нужно вводить команду дважды (один раз для родительского проекта, затем еще раз для git-submodule-foreach)
#!/bin/bash
set -e
if [ "$*" == "" ]; then
echo "Usage: $0 COMMAND"
echo
echo "Run an arbitrary COMMAND in the current git repository plus all of the submodules"
echo
exit 1
fi
echo "Entering '.'"
# run the command in PWD
"$@"
# now run the command on submodules
git submodule foreach "$*"
Поместите исполняемый файл git-foreach где-нибудь в ваш $PATH и запустите его из репозитория git:
# describe the commit at HEAD for the project and all subprojects:
git foreach git describe