git/diff.h
Junio C Hamano 77eb272046 [PATCH] Reworked external diff interface.
This introduces three public functions for diff-cache and friends can
use to call out to the GIT_EXTERNAL_DIFF program when they wish to.

A normal "add/remove/change" entry is turned into 7-parameter process
invocation of GIT_EXTERNAL_DIFF program as before.  In addition, the
program can now be called with a single parameter when diff-cache and
friends want to report an unmerged path. 

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-27 09:21:00 -07:00

40 lines
1 KiB
C

/*
* Copyright (C) 2005 Junio C Hamano
*/
#ifndef DIFF_H
#define DIFF_H
extern void diff_addremove(int addremove,
unsigned mode,
const unsigned char *sha1,
const char *base,
const char *path);
extern void diff_change(unsigned mode1, unsigned mode2,
const unsigned char *sha1,
const unsigned char *sha2,
const char *base, const char *path);
extern void diff_unmerge(const char *path);
/* These are for diff-tree-helper */
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 */