From: Ping Yin Date: Fri, 27 Mar 2009 15:23:15 GMT Subject: Re: [RFC] Interactive difftool Message-ID: <46dff0320903270823v5e8e9c80w506d8a85440588f5@mail.gmail.com> In-Reply-To: <20090327145122.GA944@gmail.com> On Fri, Mar 27, 2009 at 10:51 PM, David Aguilar wrote: > On  0, Ping Yin wrote: >> Before git-difftool goes to master, i want to propose a new feature to >> add to or replace the current behaviour of difftool. With current >> difftool, we can only see the diff one by one. However, sometimes what >> we want is to see the diff of selected files, or in a different order, >> just like what we can do in the gui. So here is what i propose >> >> $ git difftool --interactive [options] >> [1] diff.c                   |   10 +++++++++- >> [2] t/t4020-diff-external.sh |    8 ++++++++ >> Choose the file you want to see the diff of: 2 >> >> When the user types 2 and then , the external diff program is called >> >> Further more, instead of just type a number, a letter can be prepended >> to the number to represent different ways of diff. For example >> >> t2 (tool 2): see the diff for file 2 with the configured diff tool >> p2 (patch 2): see the diff for file 2 in the patch format >> >> What do you think? >> >> Ping Yin > > That would be pretty cool.  I don't know about the > merge-to-master timing and whether we'd want to include new > features before the move. > > I guess most of the work would have to be done in > git-difftool-helper.sh.  I had a co-worker that asked for this > exact feature just the other day (and ditto for mergetool). > > Patches are welcome if you have an idea for how it could work. > Right now we get called indirectly by git-diff so I > don't know if there's an easy way to hook into it like that. > It might be a matter of changing git-difftool.perl so that it > does more of the dispatching itself. > We can just change git-difftool.perl The easiest way is first parsing the output of git diff --stat, adding the number at the beginning, for example [1] diff.c | 10 +++++++++- [2] t/t4020-diff-external.sh | 8 ++++++++ When the user types a number, git-difftool-helper is launched to show the diff for the corresponding file.