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

Re: pw/add-p-select, was Re: What's cooking in git.git (Dec 2018, #01; Sun, 9)

From
PWPhillip Wood <phillip.wood@talktalk.net>
Date
Jan 22, 2019, 20:27 UTC
Message-ID
<64557c5b-8a91-2a01-fa98-5a5d8b90e49f@talktalk.net>
In-Reply-To
<nycvar.QRO.7.76.6.1901212154300.41@tvgsbejvaqbjf.bet>
Hi Dscho
On 21/01/2019 20:58, Johannes Schindelin wrote:
Show 75 quoted lines
> Hi Phillip,
> 
> 
> On Tue, 11 Dec 2018, Phillip Wood wrote:
> 
>> On 11/12/2018 09:56, Johannes Schindelin wrote:
>>
>>> On Mon, 10 Dec 2018, Phillip Wood wrote:
>>>
>>>> On 09/12/2018 20:31, Johannes Schindelin wrote:
>>>>
>>>>> I could imagine, however, that it would make sense for `git add
>>>>> -p` to imitate that feature more closely: by allowing to stage a
>>>>> single line and then presenting the current hunk (re-computed)
>>>>> again.
>>>>
>>>> that sounds like it would be quite tedious to stage more than a
>>>> couple of lines,
>>>
>>> It would be. But then, if you want to do anything slightly more
>>> complicated than staging a hunk or a line, I personally prefer the
>>> `edit` command *a lot*, as it lets me even split unrelated changes in
>>> the same line into two commits.
>>
>> I was hoping for something simpler than editing patches just to stage a
>> subset of lines that do not need to be edited.
> 
> Personally, I found that Git GUI's "Stage selected lines" worked well,
> even if I could only mark consecutive lines. That might be a valuable
> simplification in your case, too, to allow either individual lines to be
> staged, or alternatively a simple start-end range.
> 
> The trick, of course, is to present the updated hunk after staging the
> line(s)... That's what makes it so fun to use in Git GUI.
> 
>>>> and it could be awkward to get it to stage modified lines correctly
>>>> (While I was writing the feature I tried git gui, I think it is
>>>> supposed to be able to stage modified lines correctly but I never
>>>> persuaded it to do it for me. I also tried gitg, tig and hg commit
>>>> -i but I couldn't get them to do modified lines either)
>>>
>>> Git GUI works very reliably for me, but then, I have Git for Windows'
>>> patched Git GUI at my finger tips (oh how I wish we had a Git GUI
>>> maintainer again).
>>>
>>> It should not be awkward to stage a single modified line at all.
>>> Essentially, you take the hunk, strip out all `-` and `+` lines except
>>> the one you want to stage, then stage that with `git apply --cached
>>> --recount`, and then you simply re-generate that hunk.
>>
>> But that involves editing the hunk or have I misunderstood? The aim of
>> my series was that you'd select the '-' & '+' lines for the modification
>> and it would stage them properly as a modification so given
>>
>> 1 -a
>> 2 -b
>> 3 +c
>>
>> selecting 1,3 would stage
>>
>> -a
>> +c
>>   b
>>
>> not
>>
>> -a
>>   b
>> +c
>>
>> (see https://public-inbox.org/git/878ta8vyqe.fsf@evledraar.gmail.com/
>> for the background)
> 
> Why not staging them as line 1 first, then seeing an updated hunk and
> staging the next one? That's an easier UI to begin with.
If you stage line 1 first then the hunk would look like

1 -b 2 +c

If you then select line 2 you end up with
  b
+c

Which is not what you want if you're trying to stage the modified line a -> c. git-gui has some magic to get around this [1] but I found it hard to use when I tried it out a while ago - I think you have to stage the lines in a particular order for it to work.

[1] https://repo.or.cz/git-gui.git/commit/c7f7457026dc2f6979842f81cc17098579fec8d8

Best Wishes
Phillip
> 
> Ciao,
> Dscho
> 
Previous: Johannes SchindelinNext: Josh Steadmon
Message 11 of 20 in “What's cooking in git.git (Dec 2018, #01; Sun, 9)”
  1. Junio C HamanoDec 9, 2018
  2. Denton LiuDec 9, 2018
  3. Junio C HamanoDec 10, 2018
  4. Denton LiuDec 10, 2018
  5. Junio C HamanoDec 10, 2018
  6. pw/add-p-select, was Re: What's cooking in git.git (Dec 2018, #01; Sun, 9)Johannes Schindelin, Dec 9, 2018
  7. Phillip WoodDec 10, 2018
  8. Johannes SchindelinDec 11, 2018
  9. Phillip WoodDec 11, 2018
  10. Johannes SchindelinJan 21, 2019
  11. Phillip WoodJan 22, 2019
  12. Josh SteadmonDec 10, 2018
  13. Junio C HamanoDec 11, 2018
  14. Elijah NewrenDec 10, 2018
  15. Ævar Arnfjörð BjarmasonDec 10, 2018
  16. Junio C HamanoDec 11, 2018
  17. Junio C HamanoDec 11, 2018
  18. Stefan BellerDec 11, 2018
  19. Junio C HamanoDec 11, 2018
  20. Alban GruinDec 16, 2018

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.