gsync Скрипт для синхронизации одной ветки во всех удалённых репозиториях (linux git bash)

Скрипт также доступен в виде функции: https://github.com/vedro-compota/unix-co...

Делаем так:

  1. Создайте файл напр. с именем gsync, и заполните его кодом, указанным ниже
  2. дайте права на выполнение
  3. и положите его в корень вашего репозитория

Тогда чтобы синхронизировать веку 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

Key Words for FKN + antitotal forum (CS VSU):