threads / rfc / 18573

[RFC] Interactive difftool

Subject: [RFC] Interactive difftool

## tl;dr

5 messages between Mar 26, 2009 and Mar 28, 2009.

replies: 4people: 3as markdown or json

Ping Yin· Mar 26, 2009, 15:29 UTC · lore

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 <enter>, 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
David Aguilar· Mar 27, 2009, 14:51 UTC · re: Ping Yin · lore

Re: [RFC] Interactive difftool

On  0, Ping Yin <pkufranky@gmail.com> wrote:
Show 22 quoted lines
> 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 <enter>, 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.

-- 
	David
Ping Yin· Mar 27, 2009, 15:23 UTC · re: David Aguilar · lore

Re: [RFC] Interactive difftool

On Fri, Mar 27, 2009 at 10:51 PM, David Aguilar <davvid@gmail.com> wrote:
Show 38 quoted lines
> On  0, Ping Yin <pkufranky@gmail.com> 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 <enter>, 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.

Jeff King· Mar 28, 2009, 07:32 UTC · re: Ping Yin · lore

Re: [RFC] Interactive difftool

On Fri, Mar 27, 2009 at 11:23:15PM +0800, Ping Yin wrote:
Show 6 quoted lines
> 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 ++++++++

I am not paying enough attention to this thread to comment on your overall goal, but instead of parsing "--stat", try "--numstat".

-Peff
Ping Yin· Mar 28, 2009, 09:14 UTC · re: Jeff King · lore

Re: [RFC] Interactive difftool

On Sat, Mar 28, 2009 at 3:32 PM, Jeff King <peff@peff.net> wrote:
Show 12 quoted lines
> On Fri, Mar 27, 2009 at 11:23:15PM +0800, Ping Yin wrote:
>
>> 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 ++++++++
>
> I am not paying enough attention to this thread to comment on your
> overall goal, but instead of parsing "--stat", try "--numstat".
>
Thanks, that helps.

← back to recent threads