|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
: ${J=-j4}
|
|
|
|
force=
|
|
|
|
while case "$1" in
|
|
|
|
-pedantic) M=$1 ;;
|
|
|
|
-force) force=$1 ;;
|
|
|
|
-dash) with_dash=y ;;
|
|
|
|
*) 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
|
|
|
|
|
|
|
|
test -f /bin/dash || with_dash=
|
|
|
|
|
|
|
|
: ${branches='next master maint pu jch'}
|
|
|
|
|
|
|
|
for branch in $branches
|
|
|
|
do
|
|
|
|
echo >&3 "** $branch **"
|
|
|
|
|
|
|
|
revision=$(git show-ref -s --verify "refs/heads/$branch") || {
|
|
|
|
echo "** No $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" &&
|
|
|
|
git checkout $branch &&
|
|
|
|
|
|
|
|
case "$private" in
|
|
|
|
'')
|
|
|
|
;;
|
|
|
|
?*)
|
|
|
|
git merge --squash --no-commit "$private" || {
|
|
|
|
echo >&2 "Cannot apply private edition changes"
|
|
|
|
git reset --hard
|
|
|
|
}
|
|
|
|
;;
|
|
|
|
esac &&
|
|
|
|
|
|
|
|
Meta/Make $M -- $J clean &&
|
|
|
|
case "$with_dash" in
|
|
|
|
y)
|
|
|
|
case "$branch" in
|
|
|
|
master | maint | next | jch)
|
|
|
|
Meta/Make $M -- $J SHELL_PATH=/bin/dash test &&
|
|
|
|
Meta/Make $M -- $J clean
|
|
|
|
;;
|
|
|
|
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 &&
|
|
|
|
Meta/Make $M -- install &&
|
|
|
|
Meta/Make clean || exit $?
|
|
|
|
|
|
|
|
git reset --hard
|
|
|
|
|
|
|
|
done >./:all.log 3>&2 2>&1
|
|
|
|
|
|
|
|
git checkout master
|