From: Phillip Wood Date: Tue, 11 Dec 2018 14:48:03 GMT Subject: Re: pw/add-p-select, was Re: What's cooking in git.git (Dec 2018, #01; Sun, 9) Message-ID: In-Reply-To: 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: >>> >>> (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.fsf@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