new save/restore branches commands

This commit is contained in:
xonotic 2010-04-15 11:38:55 +02:00 committed by xonotic
parent 2a8628fbe7
commit 9c65237846

106
all
View File

@ -101,7 +101,7 @@ check_mergeconflict()
enter()
{
verbose cd "$1"
$2 cd "$1"
check_mergeconflict "$1"
}
@ -143,7 +143,7 @@ case "$cmd" in
;;
esac
if [ -d "$d0/$d" ]; then
enter "$d0/$d"
enter "$d0/$d" verbose
case "$d" in
.)
;;
@ -183,7 +183,7 @@ case "$cmd" in
fi
exists=false
for d in $repos; do
enter "$d0/$d"
enter "$d0/$d" verbose
if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
exists=true
verbose git checkout "$branch"
@ -224,7 +224,7 @@ case "$cmd" in
else
for d in $repos; do
dv=`visible_repo_name "$d"`
enter "$d0/$d"
enter "$d0/$d" verbose
a=
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
echo "Branch in $dv?"
@ -243,14 +243,35 @@ case "$cmd" in
for d in $repos; do
enter "$d0/$d"
echo "In $d:"
git branch -a | sed 's/^/ /; /->/d'
cd "$d0"
git branch -a -v -v | cut -c 3- | while read -r BRANCH REV UPSTREAM TEXT; do
case "$UPSTREAM" in
\[*)
UPSTREAM=${UPSTREAM#\[}
UPSTREAM=${UPSTREAM%\]}
UPSTREAM=${UPSTREAM%:*}
;;
*)
TEXT="$UPSTREAM $TEXT"
UPSTREAM=
;;
esac
if [ x"$REV" = x"->" ]; then
continue
fi
BRANCH=${BRANCH#remotes/}
echo -n " $BRANCH"
if [ -n "$UPSTREAM" ]; then
echo -n " (tracking $UPSTREAM)"
fi
#echo " $TEXT"
echo
done
done
;;
merge)
for d in $repos; do
dv=`visible_repo_name "$d"`
enter "$d0/$d"
enter "$d0/$d" verbose
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
if git log HEAD..origin/master | grep .; then
@ -273,7 +294,7 @@ case "$cmd" in
push|commit)
for d in $repos; do
dv=`visible_repo_name "$d"`
enter "$d0/$d"
enter "$d0/$d" verbose
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
if git diff HEAD | grep .; then
@ -309,11 +330,11 @@ case "$cmd" in
fi
fi
fi
enter "$d0/fteqcc"
enter "$d0/fteqcc" verbose
verbose make $MAKEFLAGS
enter "$d0/data/xonotic-data.pk3dir"
enter "$d0/data/xonotic-data.pk3dir" verbose
verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" $MAKEFLAGS
enter "$d0/darkplaces"
enter "$d0/darkplaces" verbose
verbose make $MAKEFLAGS sv-debug
verbose make $MAKEFLAGS cl-debug
verbose make $MAKEFLAGS sdl-debug
@ -343,11 +364,72 @@ case "$cmd" in
;;
each|foreach)
for d in $repos; do
enter "$d0/$d"
enter "$d0/$d" verbose
verbose "$@"
cd "$d0"
done
;;
save-patches)
outfile=$1
patchdir=`mktemp -d -t save-patches.XXXXXX`
for d in $repos; do
enter "$d0/$d" verbose
git branch -v -v | cut -c 3- | {
i=0
while read -r BRANCH REV UPSTREAM TEXT; do
case "$UPSTREAM" in
\[*)
UPSTREAM=${UPSTREAM#\[}
UPSTREAM=${UPSTREAM%\]}
UPSTREAM=${UPSTREAM%:*}
TRACK=true
;;
*)
UPSTREAM=origin/master
TRACK=false
;;
esac
if [ x"$REV" = x"->" ]; then
continue
fi
if git format-patch -o "$patchdir/$i" "$UPSTREAM".."$BRANCH" | grep .; then
echo "$d" > "$patchdir/$i/info.txt"
echo "$BRANCH" > "$patchdir/$i/info.txt"
echo "$UPSTREAM" >> "$patchdir/$i/info.txt"
echo "$TRACK" >> "$patchdir/$i/info.txt"
i=$(($i+1))
else
rm -rf "$patchdir/$i"
fi
done
}
done
( cd "$patchdir" && tar cvzf - . ) > "$outfile"
rm -rf "$patchdir"
;;
restore-patches)
infile=$1
patchdir=`mktemp -d -t restore-patches.XXXXXX`
( cd "$patchdir" && tar xvzf - ) < "$infile"
# detach the head
for P in "$patchdir"/*/info.txt; do
D=${P%/info.txt}
exec 3<"$P"
read -r d <&3
read -r BRANCH <&3
read -r UPSTREAM <&3
read -r TRACK <&3
verbose git checkout HEAD^0
verbose git branch -D "$BRANCH"
if [ x"$TRACK" = x"true" ]; then
verbose git checkout --track -b "$BRANCH" "$UPSTREAM"
else
verbose git branch -b "$BRANCH" "$UPSTREAM"
fi
verbose git am "$D"
done
rm -rf "$patchdir"
;;
*)
echo "Usage:"
echo " $SELF pull"