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
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?
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
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