From 0f6f6ec046a6061e76177efb02afeaec3e02893e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 5 Mar 2009 01:50:23 -0800 Subject: [PATCH] Add Dothem script This keeps the checkout around and performs much better than Doit. --- Dothem | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 Dothem diff --git a/Dothem b/Dothem new file mode 100755 index 0000000000..dfcf8bcf0a --- /dev/null +++ b/Dothem @@ -0,0 +1,101 @@ +#!/bin/sh + +: ${J=-j2} +: ${BUILDBASE=../buildfarm} +: ${branches='next master maint pu jch'} + +force= with_dash= M= install= +while case "$1" in + -pedantic) M=$1 ;; + -force) force=$1 ;; + -dash) with_dash=y ;; + -noinstall) install=noinstall ;; + *) break ;; + esac +do + shift +done +test -f /bin/dash || with_dash= + +for branch in $branches +do + echo "** $branch **" + revision=$(git show-ref -s --verify "refs/heads/$branch") || { + echo "** No $branch" + continue + } + test -d "$BUILDBASE/$branch" || { + echo "** No $BUILDBASE/$branch" + continue + } + + private=$(git rev-parse -q --verify private-$branch 2>/dev/null) + case $? in 0|1) ;; *) exit $? ;; esac + + if installed=$($HOME/git-$branch/bin/git version) && + if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') + then + : + elif version=v$(expr "$installed" : \ + 'git version \(.*\)\.rc[0-9]*$') + then + version="$version"-$(expr "$installed" : \ + 'git version .*\.\(rc[0-9]*\)$') + else + version=v$(expr "$installed" : 'git version \(.*\)') + fi && + 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" && + + ( + cd "$BUILDBASE/$branch" + git checkout "$branch" && + git reset --hard || exit + case "$private" in + '') + ;; + ?*) + git merge --squash --no-commit "$private" || { + echo >&2 "Cannot apply private edition changes" + git reset --hard + } + ;; + esac && + + case "$with_dash" in + y) + case "$branch" in + master | maint | next | jch) + Meta/Make $M -- $J SHELL_PATH=/bin/dash test + ;; + esac + ;; + esac && + + Meta/Make $M -- $J all && + Meta/Make $M -- $J test && + case "$branch" in + master | maint | next ) + Meta/Make $M -- doc + ;; + jch ) + Meta/Make $M -- doc install-doc + ;; + *) + : ;; + esac && + { + test z$install = znoinstall || + Meta/Make $M -- install + } || exit $? + + git reset --hard + ) || break; + +done -- 2.11.4.GIT