'git diff' against files outside a git repo

4 messages, 3 authors, 2016-06-15 · open the first message on its own page

'git diff' against files outside a git repo

From: Avery Pennarun <hidden>
Date: 2016-06-15 22:49:37

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

Re: 'git diff' against files outside a git repo

From: Elijah Newren <hidden>
Date: 2016-06-15 22:49:37

On Fri, Sep 24, 2010 at 4:23 PM, Avery Pennarun [off-list ref] 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?

Re: 'git diff' against files outside a git repo

From: Brandon Casey <hidden>
Date: 2016-06-15 22:49:37

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

Re: 'git diff' against files outside a git repo

From: Avery Pennarun <hidden>
Date: 2016-06-15 22:49:37

On Fri, Sep 24, 2010 at 3:30 PM, Elijah Newren [off-list ref] wrote:
On Fri, Sep 24, 2010 at 4:23 PM, Avery Pennarun [off-list ref] wrote:
quoted
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>
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help