Re: [PATCH] Adding rebase merge strategy
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Sep 28, 2007, 17:03 UTC
- Message-ID
- <Pine.LNX.4.64.0709281751390.28395@racer.site>
- In-Reply-To
- <11909961212172-git-send-email-tom@u2i.com>
Hi,
On Fri, 28 Sep 2007, Tom Clarke wrote:
Show 9 quoted lines
> 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?
Show 29 quoted lines
> +# 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?
Show 17 quoted lines
> +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
> + ;;
> + esacYou may want to warn earlier, if a message was supplied with -s rebase, or even error out.
Show 26 quoted lines
> 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