Re: [PATCH] Adding rebase merge strategy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux