#!/bin/bash # waits for commits on any branch on origin, checks it out and builds it . .aliases while true; do echo "Checking for new commits on any branch ..." git fetch origin branch_with_new_commits=`git fetch origin >/dev/null; git for-each-ref --format='%(refname:short) %(upstream:track)' refs/heads | grep '\[behind' | cut -d' ' -f1 | head -n1` if [ -n "$branch_with_new_commits" ]; then echo "checking out branch: $branch_with_new_commits" if git show-ref --quiet --heads "$branch_with_new_commits"; then echo "Branch $branch_with_new_commits already exists. Checking it out and pulling latest changes." git checkout "$branch_with_new_commits" git pull origin "$branch_with_new_commits" else echo "Creating and checking out new branch: $branch_with_new_commits" git checkout -b "$branch_with_new_commits" "origin/$branch_with_new_commits" fi echo "building ..." ./gradlew test fi # wait 10s with a little animation echo -e -n " waiting for changes (/) ..." sleep 2 echo -e -n "\r\033[K waiting for changes (-) ..." sleep 2 echo -e -n "\r\033[K waiting for changes (\) ..." sleep 2 echo -e -n "\r\033[K waiting for changes (|) ..." sleep 2 echo -e -n "\r\033[K waiting for changes ( ) ... " sleep 2 echo -e -n "\r\033[K checking for changes" done