20 lines
2.1 KiB
Bash
Executable file
20 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
||
echo "Параллельное выполнение скриптов и создание репозиториев для каталогов проектов."
|
||
# Для всех репозиториев на одном уровне с текущим формируем скрипт в одну строчку и выполняем эти скрипты в параллельном режиме.
|
||
# Скрипт в одну строчку — это выполнение одного из заранее подготовленных других скриптов для локальных и удалённых репозиториев.
|
||
# Формируем и выполняем скрипты в несколько шагов с разными параметрами и по дороге сохраняем отчёты о выполнении.
|
||
# Параллельное выполнение скриптов на последующем шаге начинается после завершения всех потоков на предыдущем шаге.
|
||
cd .. # выходим из папки в корень репозитория
|
||
currentTimeMillis=$(date '+%s%3N')
|
||
# 1 Удаление репозиториев на сервере
|
||
find .. -mindepth 1 -maxdepth 1 -type d -printf \
|
||
'cd %h/%f && ./.repo_remote.sh "delete" >.repo_remote.log\0' | xargs -L1 -0 -P0 bash -c
|
||
# 2 Создание репозиториев на сервере
|
||
find .. -mindepth 1 -maxdepth 1 -type d -printf \
|
||
'cd %h/%f && ./.repo_remote.sh "create" >>.repo_remote.log\0' | xargs -L1 -0 -P2 bash -c
|
||
# 3 Создание локальных репозиториев и отправка данных на сервер
|
||
# 4 Изменение настроек репозиториев на сервере, отключение ненужного
|
||
find .. -mindepth 1 -maxdepth 1 -type d -printf \
|
||
'cd %h/%f && ./.repo_local.sh >.repo_local.log\0
|
||
cd %h/%f && ./.repo_remote.sh "options" >>.repo_remote.log\0' | xargs -L1 -0 -P0 bash -c
|
||
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$currentTimeMillis")) мс."
|