recur vs recursive: help testing without touching too many stuff.

During git-merge-recur development, you could set an environment
variable GIT_USE_RECUR_FOR_RECURSIVE to use WIP recur in place
of the recursive strategy.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-07-09 00:42:26 -07:00
parent 6d297f8137
commit 06d30f4f3e
4 changed files with 36 additions and 12 deletions

18
TEST
View File

@ -1,10 +1,14 @@
#!/bin/sh -x #!/bin/sh -x
cd t || exit cd t || exit
./t3400-rebase.sh "$@" && \ GIT_USE_RECUR_FOR_RECURSIVE=LetsTryIt
./t6020-merge-df.sh "$@" && \ export GIT_USE_RECUR_FOR_RECURSIVE
./t3401-rebase-partial.sh "$@" && \
./t6021-merge-criss-cross.sh "$@" && \ ./t3400-rebase.sh "$@" &&
./t3402-rebase-merge.sh "$@" && \ ./t6020-merge-df.sh "$@" &&
./t6022-merge-rename.sh "$@" && \ ./t3401-rebase-partial.sh "$@" &&
./t6010-merge-base.sh "$@" && \ ./t6021-merge-criss-cross.sh "$@" &&
./t3402-rebase-merge.sh "$@" &&
./t6022-merge-rename.sh "$@" &&
./t6010-merge-base.sh "$@" &&
: :

View File

@ -9,8 +9,13 @@ USAGE='[-n] [--no-commit] [--squash] [-s <strategy>]... <merge-message> <head> <
LF=' LF='
' '
all_strategies='recur recur octopus resolve stupid ours' all_strategies='recursive recur octopus resolve stupid ours'
default_twohead_strategies='recur' case "${GIT_USE_RECUR_FOR_RECURSIVE}" in
'')
default_twohead_strategies=recursive ;;
?*)
default_twohead_strategies=recur ;;
esac
default_octopus_strategies='octopus' default_octopus_strategies='octopus'
no_trivial_merge_strategies='ours' no_trivial_merge_strategies='ours'
use_strategies= use_strategies=
@ -110,6 +115,10 @@ do
strategy="$2" strategy="$2"
shift ;; shift ;;
esac esac
case "$strategy,${GIT_USE_RECUR_FOR_RECURSIVE}" in
recursive,?*)
strategy=recur ;;
esac
case " $all_strategies " in case " $all_strategies " in
*" $strategy "*) *" $strategy "*)
use_strategies="$use_strategies$strategy " ;; use_strategies="$use_strategies$strategy " ;;

View File

@ -35,7 +35,13 @@ If you would prefer to skip this patch, instead run \"git rebase --skip\".
To restore the original branch and stop rebasing run \"git rebase --abort\". To restore the original branch and stop rebasing run \"git rebase --abort\".
" "
unset newbase unset newbase
strategy=recur case "${GIT_USE_RECUR_FOR_RECURSIVE}" in
'')
strategy=recursive ;;
?*)
strategy=recur ;;
esac
do_merge= do_merge=
dotest=$GIT_DIR/.dotest-merge dotest=$GIT_DIR/.dotest-merge
prec=4 prec=4
@ -198,6 +204,11 @@ do
shift shift
done done
case "$strategy,${GIT_USE_RECUR_FOR_RECURSIVE}" in
recursive,?*)
strategy=recur ;;
esac
# Make sure we do not have .dotest # Make sure we do not have .dotest
if test -z "$do_merge" if test -z "$do_merge"
then then
@ -292,7 +303,7 @@ then
exit $? exit $?
fi fi
if test "@@NO_PYTHON@@" && test "$strategy" = "recur" if test "@@NO_PYTHON@@" && test "$strategy" = "recursive"
then then
die 'The recursive merge strategy currently relies on Python, die 'The recursive merge strategy currently relies on Python,
which this installation of git was not configured with. Please consider which this installation of git was not configured with. Please consider

View File

@ -51,7 +51,7 @@ test_expect_success setup '
' '
test_expect_success 'reference merge' ' test_expect_success 'reference merge' '
git merge -s recur "reference merge" HEAD master git merge -s recursive "reference merge" HEAD master
' '
test_expect_success rebase ' test_expect_success rebase '