Hi, On Fri, 28 Sep 2007, Tom Clarke wrote: > diff --git a/git-merge-rebase.sh b/git-merge-rebase.sh > new file mode 100755 > index 0000000..fc07331 > --- /dev/null > +++ b/git-merge-rebase.sh > @@ -0,0 +1,34 @@ > +#!/bin/sh > +# > +# Copyright (c) 2005 Linus Torvalds Really? > +# Copyright (c) 2007 Tom Clarke > +# > +# Resolve two trees with rebase > + > +# The first parameters up to -- are merge bases; the rest are heads. > +bases= head= remotes= sep_seen= > +for arg > +do > + case ",$sep_seen,$head,$arg," in > + *,--,) > + sep_seen=yes > + ;; > + ,yes,,*) > + head=$arg > + ;; > + ,yes,*) > + remotes="$remotes$arg " > + ;; > + *) > + bases="$bases$arg " > + ;; > + esac > +done > + > +# Give up if we are given two or more remotes -- not handling octopus. > +case "$remotes" in > +?*' '?*) > + exit 2 ;; > +esac You can check that much earlier, no? IOW something like while test $# != 0 do case "$1" in --) break ;; esac shift done test $# = 3 || die "merge stragey rebase needs exactly one ref" git rebase "$3" (It's not like you need the variables...) Hmm? > +git rebase $remotes || exit 2 > diff --git a/git-merge.sh b/git-merge.sh > index 6c513dc..ea3cc16 100755 > --- a/git-merge.sh > +++ b/git-merge.sh > @@ -81,11 +82,18 @@ finish () { > echo "No merge message -- not updating HEAD" > ;; > *) > - git update-ref -m "$rlogm" HEAD "$1" "$head" || exit 1 > + case " $wt_strategy " in > + *" $no_update_ref "*) > + ;; > + *) > + git update-ref -m "$rlogm" HEAD "$1" "$head" || exit 1 > + ;; > + esac You may want to warn earlier, if a message was supplied with -s rebase, or even error out. > diff --git a/t/t3031-merge-rebase.sh b/t/t3031-merge-rebase.sh > new file mode 100755 > index 0000000..8e3641d > --- /dev/null > +++ b/t/t3031-merge-rebase.sh > @@ -0,0 +1,34 @@ > +#!/bin/sh > + > +test_description='merge-rebase backend test' > + > +. ./test-lib.sh > + > +test_expect_success 'merging using rebase does not create merge commit' ' > + echo hello >a && > + git add a && > + test_tick && git commit -m initial && > + > + git checkout -b branch && > + echo hello >b && > + git add b && > + test_tick && git commit -m onbranch && > + > + git checkout master && > + echo update >a && > + git add a && > + test_tick && git commit -m update && I like to have something like this in a "test_expect_success setup" part, and then have the meat of the test in its own test case. But hey, you're the author, it's for you to decide. Thanks, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html