Re: [PATCH] Adding rebase merge strategy
From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:37
Hi, On Fri, 28 Sep 2007, Tom Clarke wrote:
quoted hunk ↗ jump to hunk
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?
quoted hunk ↗ jump to hunk
+git rebase $remotes || exit 2diff --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.
quoted hunk ↗ jump to hunk
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