Subject: Re: [PATCHv2] Warnings before rebasing -i published history

From: Matthieu Moy <[email-masked]>
Date: Mon, 11 Jun 2012 12:55:54 +0200

Lucien Kong <[email-masked]> writes:

> "git rebase -i" can be very dangerous if used on an already published
> history. This code detects that one is rewriting a commit that is an
> ancestor of a remote-tracking branch, and warns the user through the
> editor. This feature is controlled by a new config key
> rebase.checkremoterefs.

For the lazy, you could provide an example of result in the commit
message. People don't want to review how the patch is written if they
disagree with the result.

> +		two_sha1=$(echo "$tmp" | sed -n 1p) &&
> +		three_sha1=$(echo "$tmp" | sed -n 2p) &&
> +		four_sha1=$(echo "$tmp" | sed -n 3p) &&

IIRC, the test suite was made to give reproducible sha1, so you
shouldn't need these.

> +		echo "pick $two_sha1 two_commit" >expected &&
> +		echo "# Commit above this line appear in: origin/master" >>expected &&
> +		echo "pick $three_sha1 three_commit" >>expected &&
> +		echo "# Commit above this line appear in: origin/master" >>expected &&
> +		echo "pick $four_sha1 four_commit" >>expected &&
> +		test_cmp expected actual

You don't want to repeat "Commit above this line" for each commit. What
I meant in my previous suggestion was

pick foo
pick bar
# Commits above this line appear in origin/master
pick boz

i.e. just show where the remote points once.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/