mirror of
https://github.com/git/git
synced 2024-10-01 14:15:19 +00:00
Add Dothem script
This keeps the checkout around and performs much better than Doit.
This commit is contained in:
parent
1c35937ee6
commit
0f6f6ec046
101
Dothem
Executable file
101
Dothem
Executable file
|
@ -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
|
Loading…
Reference in a new issue