diff options
author | Junio C Hamano <junkio@cox.net> | 2005-04-26 09:25:05 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-26 09:25:05 -0700 |
commit | be3cfa85f45e32722a65349d023667be906a66b6 (patch) | |
tree | a172f60b1266b028962753354a367142f34c090d /show-diff.c | |
parent | d1df5743809614241883ecad51876607cf432034 (diff) | |
download | git-be3cfa85f45e32722a65349d023667be906a66b6.tar.gz |
[PATCH] Diff-tree-helper take two.
This reworks the diff-tree-helper and show-diff to further make external
diff command interface simpler.
These commands now honor GIT_EXTERNAL_DIFF environment variable which
can point at an arbitrary program that takes 7 parameters:
name file1 file1-sha1 file1-mode file2 file2-sha1 file2-mode
The parameters for an external diff command are as follows:
name this invocation of the command is to emit diff
for the named cache/tree entry.
file1 pathname that holds the contents of the first
file. This can be a file inside the working
tree, or a temporary file created from the blob
object, or /dev/null. The command should not
attempt to unlink it -- the temporary is
unlinked by the caller.
file1-sha1 sha1 hash if file1 is a blob object, or "."
otherwise.
file1-mode mode bits for file1, or "." for a deleted file.
If GIT_EXTERNAL_DIFF environment variable is not set, the
default is to invoke diff with the set of parameters old
show-diff used to use. This built-in implementation honors the
GIT_DIFF_CMD and GIT_DIFF_OPTS environment variables as before.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'show-diff.c')
-rw-r--r-- | show-diff.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/show-diff.c b/show-diff.c index 3e798be303..967c523990 100644 --- a/show-diff.c +++ b/show-diff.c @@ -53,14 +53,11 @@ int main(int argc, char **argv) perror("read_cache"); exit(1); } - prepare_diff_cmd(); + for (i = 0; i < entries; i++) { struct stat st; struct cache_entry *ce = active_cache[i]; int changed; - unsigned long size; - char type[20]; - void *old; if (1 < argc && ! matches_pathspec(ce, argv+1, argc-1)) @@ -87,8 +84,7 @@ int main(int argc, char **argv) else { printf("%s: %s\n", ce->name, strerror(errno)); if (errno == ENOENT) - show_diff_empty(ce->sha1, ce->name, - reverse); + show_diff_empty(ce, reverse); } continue; } @@ -104,14 +100,7 @@ int main(int argc, char **argv) if (silent) continue; - old = read_sha1_file(ce->sha1, type, &size); - if (! old) - error("unable to read blob object for %s (%s)", - ce->name, sha1_to_hex(ce->sha1)); - else - show_differences(ce->name, ce->name, old, size, - reverse); - free(old); + show_differences(ce, reverse); } return 0; } |