Subject: Re: [PATCH/RFC] rebase: new convenient option to edit a single commit

From: Matthieu Moy <[email-masked]>
Date: Thu, 27 Feb 2014 14:52:39 +0100

Nguyễn Thái Ngọc Duy <[email-masked]> writes:

> I find myself often do "git rebase -i xxx" and replace one "pick" line
> with "edit" to amend just one commit when I see something I don't like
> in that commit. This happens often while cleaning up a series. This
> automates the "replace" step so it sends me straight to that commit.

Sounds a good idea to me.

>  git-rebase--interactive.sh | 17 ++++++++++++++---
>  git-rebase.sh              | 10 ++++++++++

(obviously, don't forget doc and test if this becomes a non-RFC)

>  has_action "$todo" ||
>  	die_abort "Nothing to do"
> diff --git a/git-rebase.sh b/git-rebase.sh
> index 1cf8dba..98796cc 100755
> --- a/git-rebase.sh
> +++ b/git-rebase.sh
> @@ -31,6 +31,7 @@ verify             allow pre-rebase hook to run
>  rerere-autoupdate  allow rerere to update index with resolved conflicts
>  root!              rebase all reachable commits up to the root(s)
>  autosquash         move commits that begin with squash!/fixup! under -i
> +1,edit-one!        generate todo list to edit this commit
>  committer-date-is-author-date! passed to 'git am'
>  ignore-date!       passed to 'git am'
>  whitespace=!       passed to 'git apply'
> @@ -249,6 +250,10 @@ do
>  	-i)
>  		interactive_rebase=explicit
>  		;;
> +	-1)
> +		interactive_rebase=explicit
> +		edit_one=t
> +		;;
>  	-k)
>  		keep_empty=yes
>  		;;
> @@ -450,6 +455,11 @@ then
>  		;;
>  	*)	upstream_name="$1"
>  		shift
> +		if test -n "$edit_one"
> +		then
> +			edit_one="$upstream_name"
> +			upstream_name="$upstream_name^"
> +		fi
>  		;;

I think you forgot the case where the user specified -1 but no extra
argument (i.e. use the default to upstream branch). Shouldn't the added
code be after the esac?

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