Subject: Re: Extended splitting for "git add --interactive"

From: Junio C Hamano <[email-masked]>
Date: Wed, 26 Nov 2014 10:57:38 -0800

"Ulrich Windl" <[email-masked]> writes:

> This is for git-1.7.12 (an older version from the SLES11 SP3 SDK). If
> the issue is solved meanwhile, I'll be happy, and I apologize for
> being too lazy to find out.

The answer is no ;-).

> Currently Git cannot split a block of changes like
>
> -AAA
> -BBB
> +CCC
> +DDD
>
> Into
> -AAA
> +CCC
> and
> -BBB
> +DDD

And it is unlikely to do so ever, because it is a wrong thing to do.

What makes the user happy to see above split when the user is
expecting this instead?

-AAA
and
-BBB
+CCC
+DDD

> Another split that is not possible is a split across an empty line, like:
>
> +AAA
> +     <empty line (in reality)>
> +BBB

Likewise.  An empty line is not that special.  AAA may be adding one
block of lines "if (condition) { ... }" and BBB may be another, and
it often happens that you would want to separate these into two
changes, with or without an empty line in between.

   +if (foo) {
   +  do foo thing
   +}
   +if (bar) {
   +  do bar thing
   +}
   
Having said all that, I am not opposed to a usable idea to allow the
user to specify where in a contiguous block of -*+* to break a hunk
and how.