#!/bin/sh : ${J=-j2} force= while case "$1" in -pedantic) M=$1 ;; -force) force=$1 ;; *) break ;; esac do shift done test -z "$(git diff --cached --name-status)" || { echo >&2 "Repository unclean." exit 1 } Meta/Make clean >/dev/null 2>&1 : ${branches='next master maint pu'} for branch in $branches do echo >&3 "** $branch **" revision=$(git show-ref -s --verify "refs/heads/$branch") || { echo "** No $branch" continue } if installed=$($HOME/git-$branch/bin/git version) && { version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') || version=v$(expr "$installed" : 'git version \(.*\)') } && version=$(git rev-parse --verify "$version^0" 2>/dev/null) && test "z$version" = "z$revision" then echo "* up-to-date version \"$installed\" is already installed from $branch" test -n "$force" || continue fi echo "** $branch" && git checkout $branch && Meta/Make $M -- $J all && Meta/Make $M -- test && Meta/Make $M -- install && Meta/Make clean || exit $? done >./:all.log 3>&2 2>&1 git checkout master