Hi Dscho and Slavica

On 11/12/2018 09:56, Johannes Schindelin wrote:
Hi Phillip,

[Cc:ing Slavica, the Outreachy intern working on converting `add -i` to a
built-in]

On Mon, 10 Dec 2018, Phillip Wood wrote:

On 09/12/2018 20:31, Johannes Schindelin wrote:


<snip/>

(which I take as being inspired by Git GUI's "Stage Selected Line"),

not particularly, I don't use git gui I just wanted a way to easily
stage a subset of lines without editing the hunk.

Okay. I used to use Git GUI quite a bit to stage individual lines, but
recently I tried to stay more in the terminal and used the `split` and
`edit` commands of `add -p` quite extensively. Wishing for an quicker way
to stage individual lines between all of my debug print statements.

Yes that's one of my main uses for selective staging as well

and thought that it would be useful.

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.

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....@evledraar.gmail.com/ for the background)

I'll try and re-roll in the New Year, when does the outreachy project
for converting add -i start? - it would be good to try and get this
pinned down before then.

Too late. Slavica started on December 4th, and you can even read about it
on their blog: https://slavicadj.github.io/blog/

Thanks for the link and hello Slavica! - I look forward to reading your patches when you post them here.

Best Wishes

Phillip

Reply via email to