1
0
mirror of https://github.com/git/git.git synced 2024-11-19 01:13:53 +01:00
git/diff.h
Junio C Hamano be3cfa85f4 [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>
2005-04-26 09:25:05 -07:00

32 lines
903 B
C

/*
* Copyright (C) 2005 Junio C Hamano
*/
#ifndef DIFF_H
#define DIFF_H
/* These two are for backward compatibility with show-diff;
* new users should not use them.
*/
extern void show_differences(const struct cache_entry *ce, int reverse);
extern void show_diff_empty(const struct cache_entry *ce, int reverse);
struct diff_spec {
union {
const char *name; /* path on the filesystem */
unsigned char sha1[20]; /* blob object ID */
} u;
unsigned short mode; /* file mode */
unsigned sha1_valid : 1; /* if true, use u.sha1 and trust mode.
* (however with a NULL SHA1, read them
* from the file!).
* if false, use u.name and read mode from
* the filesystem.
*/
unsigned file_valid : 1; /* if false the file does not even exist */
};
extern void run_external_diff(const char *name,
struct diff_spec *, struct diff_spec *);
#endif /* DIFF_H */