Created
November 6, 2018 00:44
-
-
Save davidoram/713e96350023494f32a6f6500a159efa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/bash | |
# | |
# Assumes you have run 'github_get_all.sh' to get the latest git repos for your org | |
# | |
# Note:This script will ONLY work reliably if you have run 'github_get_all.sh on an empty | |
# directory, so that all repos are freashly cloned and clean | |
# | |
# Iterate over all the github repos under the cwd, for each reports if | |
# branch1 is behind branch2 | |
# | |
# eg: To see if develop is behind master: | |
# | |
# github_check_branch.sh MyOrg master develop | |
# | |
# Outputs to ~github_check_branch.log logfile in the current dir. | |
# | |
# See https://github.com/davidoram/ght | |
ght repos -o "$1" > all_repos.txt | |
branch1=$2 | |
branch2=$3 | |
logfile=$(pwd)/~github_check_branch.log | |
echo "> Started. Checking if branch '${branch1}' is behind '${branch2}'" > ${logfile} | |
while read org_repo; do | |
if [[ $org_repo =~ (.*)/(.*) ]]; then | |
org=${BASH_REMATCH[1]} | |
repo=${BASH_REMATCH[2]} | |
if [[ -d "${repo}" ]]; then | |
pushd "${repo}" | |
diffurl="https://github.com/${org_repo}/compare/${branch1}...${branch2}" | |
# Check branch1 exists | |
git checkout "${branch1}" | |
if [[ $? -eq 0 ]]; then | |
# Check branch2 exists | |
git checkout "${branch2}" | |
if [[ $? -eq 0 ]]; then | |
# See https://stackoverflow.com/questions/20433867/git-ahead-behind-info-between-master-and-branch | |
behind=$( git rev-list --right-only --count ${branch1}...${branch2} ) | |
if [[ $behind -eq 0 ]]; then | |
echo "OK ${org_repo} branch '${branch1}' is behind branch '${branch2}' by ${behind} commits. ${diffurl}" >> ${logfile} | |
else | |
echo "BEHIND ${org_repo} branch '${branch1}' is behind branch '${branch2}' by ${behind} commits. ${diffurl}" >> ${logfile} | |
fi | |
else | |
echo "MISSING ${org_repo} doesnt have branch '${branch2}'. ${diffurl}" >> ${logfile} | |
fi | |
else | |
echo "MISSING ${org_repo} doesnt have branch '${branch1}'. ${diffurl}" >> ${logfile} | |
fi | |
popd | |
else | |
echo "${org_repo} ERROR: Missing repo " >> ${logfile} | |
fi | |
fi | |
done <all_repos.txt | |
echo '> Finished' >> ${logfile} | |
echo "See ${logfile}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment