All of lore.kernel.org
 help / color / mirror / Atom feed
* 'git diff' against files outside a git repo
@ 2010-09-24 22:23 Avery Pennarun
  2010-09-24 22:30 ` Elijah Newren
  2010-09-24 22:30 ` Brandon Casey
  0 siblings, 2 replies; 7+ messages in thread
From: Avery Pennarun @ 2010-09-24 22:23 UTC (permalink / raw)
  To: Git Mailing List

Hi all,

I'm interested in using 'git diff' on some files that aren't actually
inside a git repo at all.  Specifically, the --color-words and
--word-diff-regex are really cool and I happen to have a use for them
on files that aren't stored verbatim in git.  As a whole, git's
implementation of diff seems to be the fastest-moving one out there,
so I'd rather use it instead of another random diff implementation.

(For the curious: the particular "files" I want to compare are
actually split into a hierarchical tree of blobs using bup's rolling
checksum and *then* stored in git.  Obviously I have to reassemble
them before I can diff them, which is fine and easy, but I then want
to run 'git diff' against them, which seems to not be so easy.)

(For the extremely curious: the particular files I want to diff are
mega-gigantic csv files from database dumps.  Because of bup's tree
format, I should be able to zoom in on just the overall part of the
file that has changed, then diff only that, which will be much faster
than running a diff algorithm against the whole file.  Essentially
O(log n) vs. the file size.)

Is there already a way to get 'git diff' to do this?

If not, would it be sensible to extend git-diff to do comparison
between two outside files?

Or should I stop trying to do this and use some other diff
implementation instead?

Another alternative would be to teach git directly how to act on
bup-style large objects, but that's... a lot of work.  And it's not
obvious that a patch to do so would be accepted anyhow, since
bup-style storage is necessarily not as space-efficient and is harder
to deltify.

Thanks,

Avery

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-24 22:23 'git diff' against files outside a git repo Avery Pennarun
@ 2010-09-24 22:30 ` Elijah Newren
  2010-09-25  7:45   ` Avery Pennarun
  2010-09-24 22:30 ` Brandon Casey
  1 sibling, 1 reply; 7+ messages in thread
From: Elijah Newren @ 2010-09-24 22:30 UTC (permalink / raw)
  To: Avery Pennarun; +Cc: Git Mailing List

On Fri, Sep 24, 2010 at 4:23 PM, Avery Pennarun <apenwarr@gmail.com> wrote:
> Hi all,
>
> I'm interested in using 'git diff' on some files that aren't actually
> inside a git repo at all.  Specifically, the --color-words and
> --word-diff-regex are really cool and I happen to have a use for them
> on files that aren't stored verbatim in git.  As a whole, git's
> implementation of diff seems to be the fastest-moving one out there,
> so I'd rather use it instead of another random diff implementation.
>
<snip>
> Is there already a way to get 'git diff' to do this?
>
> If not, would it be sensible to extend git-diff to do comparison
> between two outside files?

Isn't this what git diff --no-index ... does?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-24 22:23 'git diff' against files outside a git repo Avery Pennarun
  2010-09-24 22:30 ` Elijah Newren
@ 2010-09-24 22:30 ` Brandon Casey
  1 sibling, 0 replies; 7+ messages in thread
From: Brandon Casey @ 2010-09-24 22:30 UTC (permalink / raw)
  To: Avery Pennarun; +Cc: Git Mailing List

On 09/24/2010 05:23 PM, Avery Pennarun wrote:
> Hi all,
> 
> I'm interested in using 'git diff' on some files that aren't actually
> inside a git repo at all.  Specifically, the --color-words and
> --word-diff-regex are really cool and I happen to have a use for them
> on files that aren't stored verbatim in git.  As a whole, git's
> implementation of diff seems to be the fastest-moving one out there,
> so I'd rather use it instead of another random diff implementation.
> 
> (For the curious: the particular "files" I want to compare are
> actually split into a hierarchical tree of blobs using bup's rolling
> checksum and *then* stored in git.  Obviously I have to reassemble
> them before I can diff them, which is fine and easy, but I then want
> to run 'git diff' against them, which seems to not be so easy.)
> 
> (For the extremely curious: the particular files I want to diff are
> mega-gigantic csv files from database dumps.  Because of bup's tree
> format, I should be able to zoom in on just the overall part of the
> file that has changed, then diff only that, which will be much faster
> than running a diff algorithm against the whole file.  Essentially
> O(log n) vs. the file size.)
> 
> Is there already a way to get 'git diff' to do this?

Doesn't

   git diff file.one file.two

work?

Or are you asking for something else?

-Brandon

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-24 22:30 ` Elijah Newren
@ 2010-09-25  7:45   ` Avery Pennarun
  2010-09-26  7:13     ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Avery Pennarun @ 2010-09-25  7:45 UTC (permalink / raw)
  To: Elijah Newren; +Cc: Git Mailing List

On Fri, Sep 24, 2010 at 3:30 PM, Elijah Newren <newren@gmail.com> wrote:
> On Fri, Sep 24, 2010 at 4:23 PM, Avery Pennarun <apenwarr@gmail.com> wrote:
>> I'm interested in using 'git diff' on some files that aren't actually
>> inside a git repo at all.  Specifically, the --color-words and
>> --word-diff-regex are really cool and I happen to have a use for them
>> on files that aren't stored verbatim in git.  As a whole, git's
>> implementation of diff seems to be the fastest-moving one out there,
>> so I'd rather use it instead of another random diff implementation.
>>
> <snip>
>> Is there already a way to get 'git diff' to do this?
>>
>> If not, would it be sensible to extend git-diff to do comparison
>> between two outside files?
>
> Isn't this what git diff --no-index ... does?

Aha, that was exactly what I wanted. :)

Oddly, 'git diff file1 file2' *doesn't* work when file1 and file2 are
in a working tree; git tries to diff something, apparently, but I
don't know what.  When you're outside a working tree, it works.  And
your "--no-index" suggestion is what makes it work even when you're in
a working tree.

Thanks to you and Brandon for your help.  I guess I'll try to submit a
patch to the git-diff manpage to make this type of usage more obvious.

Have fun,

Avery

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-25  7:45   ` Avery Pennarun
@ 2010-09-26  7:13     ` Junio C Hamano
  2010-09-26  9:38       ` Avery Pennarun
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2010-09-26  7:13 UTC (permalink / raw)
  To: Avery Pennarun; +Cc: Elijah Newren, Git Mailing List

Avery Pennarun <apenwarr@gmail.com> writes:

> Oddly, 'git diff file1 file2' *doesn't* work when file1 and file2 are
> in a working tree; git tries to diff something, apparently, but I
> don't know what.

Heh, I thought you've been using git long enough that you sh/would know
that you are comparing the index and the working tree, using "file1" and
"file2" as pathspecs.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-26  7:13     ` Junio C Hamano
@ 2010-09-26  9:38       ` Avery Pennarun
  2010-09-27  7:38         ` Michael J Gruber
  0 siblings, 1 reply; 7+ messages in thread
From: Avery Pennarun @ 2010-09-26  9:38 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Elijah Newren, Git Mailing List

On Sun, Sep 26, 2010 at 12:13 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Avery Pennarun <apenwarr@gmail.com> writes:
>
>> Oddly, 'git diff file1 file2' *doesn't* work when file1 and file2 are
>> in a working tree; git tries to diff something, apparently, but I
>> don't know what.
>
> Heh, I thought you've been using git long enough that you sh/would know
> that you are comparing the index and the working tree, using "file1" and
> "file2" as pathspecs.

Ha, of course.  And I do that all the time, so it's silly that I
somehow forgot for the duration of that email.

The real surprise was that this *wasn't* the meaning when I was
outside a git tree :)

Have fun,

Avery

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: 'git diff' against files outside a git repo
  2010-09-26  9:38       ` Avery Pennarun
@ 2010-09-27  7:38         ` Michael J Gruber
  0 siblings, 0 replies; 7+ messages in thread
From: Michael J Gruber @ 2010-09-27  7:38 UTC (permalink / raw)
  To: Avery Pennarun; +Cc: Junio C Hamano, Elijah Newren, Git Mailing List

Avery Pennarun venit, vidit, dixit 26.09.2010 11:38:
> On Sun, Sep 26, 2010 at 12:13 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Avery Pennarun <apenwarr@gmail.com> writes:
>>
>>> Oddly, 'git diff file1 file2' *doesn't* work when file1 and file2 are
>>> in a working tree; git tries to diff something, apparently, but I
>>> don't know what.
>>
>> Heh, I thought you've been using git long enough that you sh/would know
>> that you are comparing the index and the working tree, using "file1" and
>> "file2" as pathspecs.
> 
> Ha, of course.  And I do that all the time, so it's silly that I
> somehow forgot for the duration of that email.
> 
> The real surprise was that this *wasn't* the meaning when I was
> outside a git tree :)

Well, DWIM really is DWYTIM ;)

Michael

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-09-27  7:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-24 22:23 'git diff' against files outside a git repo Avery Pennarun
2010-09-24 22:30 ` Elijah Newren
2010-09-25  7:45   ` Avery Pennarun
2010-09-26  7:13     ` Junio C Hamano
2010-09-26  9:38       ` Avery Pennarun
2010-09-27  7:38         ` Michael J Gruber
2010-09-24 22:30 ` Brandon Casey

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.