git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 26, 2014, 20:24 UTC
Message-ID
<xmqqtx1lpv50.fsf@gitster.dls.corp.google.com>
In-Reply-To
<xmqq3895rdr1.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 23 quoted lines
> "Ulrich Windl" <Ulrich.Windl@rz.uni-regensburg.de> writes:
>
>> 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.

Of course, splitting at blank or at any arbitrary point that the implementor of this new feature decides to be good is not end of the world. If the split at that chosen point is undesirable, the user can join them back. But then the feature did not help such a user very much. So that selection of "any arbitrary point" has to be fairly a good heuristic, making majority of users happy, to be worth for users to try. If they try splitting with the heuristics and get a good result 80% of times, 20% of time they instead may need to join the wrong splits back, but overall it will be a win.

In an extreme case, we could have an option to split a run of zero or more "-" lines followed by zero or more "+" lines into one line per hunk, and let the user pick the line they want, which would solve your original issue of turning "-A-B+C+D" into "-A+C" and "-B+D", while allowing them to be commited with a different splitting, e.g. "-A" and "-B+C+D".

But at that point, I suspect most people may choose to (e)dit the patch themselves instead. I dunno.

Previous: Junio C HamanoNext: Ulrich Windl
Message 3 of 6 in “Extended splitting for "git add --interactive"”
  1. Ulrich WindlNov 26, 2014
  2. Junio C HamanoNov 26, 2014
  3. Junio C HamanoNov 26, 2014
  4. Antw: Re: Extended splitting for "git add --interactive"Ulrich Windl, Nov 27, 2014
  5. Johan HerlandNov 27, 2014
  6. Brandon McCaigNov 27, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.