gsync Скрипт для синхронизации одной ветки во всех удалённых репозиториях (linux git bash)
Primary tabs
Скрипт также доступен в виде функции: https://github.com/vedro-compota/unix-command-aliases
Делаем так:
- Создайте файл напр. с именем gsync, и заполните его кодом, указанным ниже
- дайте права на выполнение
- и положите его в корень вашего репозитория
Тогда чтобы синхронизировать веку master (можно и другую) во всех удалённых репозиториях просто используйте вызов (в консоли в корне репы):
./gsync master
Скрипт синхронизации (содержимое):
#!/bin/bash
function gsync() {
RemoteReposNames=() # объявляем массив
RemoteDataText="$(git remote -v)"
#echo "${RemoteDataText}"
while read -r line; do
#echo "... $line ..."
words=($line)
#printf "%s\n" "${words[@]}"
#echo '--'
RemoteReposNames+=("${words[0]}") # добавляем элемент в массив
#printf "%s\n" "${RemoteReposNames[@]}"
#echo '------'
done <<< "$RemoteDataText"
# оставляем только уникальные значения
RemoteReposNames=($(echo "${RemoteReposNames[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
echo 'Remotes in your repo are:'
printf "%s\n" "${RemoteReposNames[@]}"
echo 'Starting sync...'
for remoteName in "${RemoteReposNames[@]}"
do
echo "Pull $remoteName $1----------- "
git pull $remoteName $1
done
for remoteName in "${RemoteReposNames[@]}"
do
echo "Push $remoteName $1---------- "
git push $remoteName $1
done
echo 'Sync is finished.'
}
gsync $1- Log in to post comments
- 1770 reads