Languages
[Edit]
EN

Git / Bash - how to pull all projects together

4 points
Created by:
AnnLen
13390

In this short article we are going to show, how to create Bash script that runs git pull command on all repositories.

Quick solution (create pull-all.sh script):

#!/bin/bash

paths=("/path/to/repository_1" "/path/to/repository_2" "/path/to/repository_n")

for item in ${paths[@]};
do
	cd "${item}"

	echo "----------------------------------------"
	echo "${item}"
	echo "----------------------------------------"
	if [ -d "${item}" ] && [ -d "${item}/.git" ];
	then
		if [ -n "$(git status --porcelain)" ];
		then
			echo "Some local changes detected !!!"
		else
			git pull --all
		fi
	else
		echo "Indicated path does not indicate repository.";
	fi
	echo ""

	cd ..
done

read # waiting for Enter key

Script running:

./pull-all.sh

Note: don't forget to add executable permissions: chmod u+x pull-all.sh.

Example output:

----------------------------------------
/path/to/repository_1
----------------------------------------
Already up to date.

----------------------------------------
/path/to/repository_2
----------------------------------------
Some local changes detected !!!

----------------------------------------
/path/to/repository_3
----------------------------------------
Already up to date.

 

Automatic repositories detection

In this section you can see approach that scans sibling directories to find and pull git repositories.

pull-all.sh script file:

#!/bin/bash

CURRENT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)

cd "${CURRENT_DIR}"

for item in *;
do
	if [ -d "${item}" ] && [ -d "${item}/.git" ];
	then
		cd "${item}"

		echo "----------------------------------------"
		echo "${item}"
		echo "----------------------------------------"
		if [ -n "$(git status --porcelain)" ];
		then
			echo "Some local changes detected !!!"
		else
			git pull --all
		fi
		echo ""

		cd ..
	fi
done

echo "DONE!"

Git

Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join