git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Phillip Wood <phillip.wood@talktalk.net>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	phillip.wood@dunelm.org.uk
Cc: Slavica Djukic <slavicadj.ip2018@gmail.com>,
	Junio C Hamano <gitster@pobox.com>,
	git@vger.kernel.org
Subject: Re: pw/add-p-select, was Re: What's cooking in git.git (Dec 2018, #01; Sun, 9)
Date: Tue, 22 Jan 2019 20:27:04 +0000	[thread overview]
Message-ID: <64557c5b-8a91-2a01-fa98-5a5d8b90e49f@talktalk.net> (raw)
In-Reply-To: <nycvar.QRO.7.76.6.1901212154300.41@tvgsbejvaqbjf.bet>

Hi Dscho

On 21/01/2019 20:58, Johannes Schindelin wrote:
> 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
> 


  reply	other threads:[~2019-01-22 20:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-09  8:42 What's cooking in git.git (Dec 2018, #01; Sun, 9) Junio C Hamano
2018-12-09  9:03 ` Denton Liu
2018-12-10  3:21   ` Junio C Hamano
2018-12-10  3:52     ` Denton Liu
2018-12-10 10:26       ` Junio C Hamano
2018-12-09 20:31 ` pw/add-p-select, was " Johannes Schindelin
2018-12-10 10:42   ` Phillip Wood
2018-12-11  9:56     ` Johannes Schindelin
2018-12-11 14:48       ` Phillip Wood
2019-01-21 20:58         ` Johannes Schindelin
2019-01-22 20:27           ` Phillip Wood [this message]
2018-12-10 18:53 ` Josh Steadmon
2018-12-11  1:43   ` Junio C Hamano
2018-12-10 20:05 ` Elijah Newren
2018-12-10 21:50   ` Ævar Arnfjörð Bjarmason
2018-12-11  1:49     ` Junio C Hamano
2018-12-11  1:48   ` Junio C Hamano
2018-12-11  2:00 ` Stefan Beller
2018-12-11  6:17   ` Junio C Hamano
2018-12-16 21:48 ` Alban Gruin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=64557c5b-8a91-2a01-fa98-5a5d8b90e49f@talktalk.net \
    --to=phillip.wood@talktalk.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=slavicadj.ip2018@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).