diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2006-12-17 23:07:28 +0100 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-17 23:07:28 +0100 | 
| commit | 6cb326c83b3c0b35d472305294afee3105b3088d (patch) | |
| tree | fcceeec36ae6f1b3b8e9f861064e2d6ba962a6e0 /git.h | |
| parent | Reformat code to avoid excessive line lengths (diff) | |
| download | cgit-6cb326c83b3c0b35d472305294afee3105b3088d.tar.gz cgit-6cb326c83b3c0b35d472305294afee3105b3088d.tar.bz2 cgit-6cb326c83b3c0b35d472305294afee3105b3088d.zip | |
Show list of modified files in ui-commit.c
Compare current commit with 1.parent, and for each affected file display
current filemode, old filemode if changed, current filename and source
filename if it was a copy/rename.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
| -rw-r--r-- | git.h | 106 | 
1 files changed, 106 insertions, 0 deletions
| @@ -128,6 +128,8 @@ static inline ssize_t xwrite(int fd, const void *buf, size_t len)  #define MINIMUM_ABBREV 4  #define DEFAULT_ABBREV 7 +extern const unsigned char null_sha1[20]; +  extern int sha1_object_info(const unsigned char *, char *, unsigned long *);  extern void * read_sha1_file(const unsigned char *sha1, char *type, unsigned long *size); @@ -136,6 +138,24 @@ extern int get_sha1(const char *str, unsigned char *sha1);  extern int get_sha1_hex(const char *hex, unsigned char *sha1);  extern char *sha1_to_hex(const unsigned char *sha1);	/* static buffer result! */ +static inline int is_null_sha1(const unsigned char *sha1) +{ +	return !memcmp(sha1, null_sha1, 20); +} +static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) +{ +	return memcmp(sha1, sha2, 20); +} +static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) +{ +	memcpy(sha_dst, sha_src, 20); +} +static inline void hashclr(unsigned char *hash) +{ +	memset(hash, 0, 20); +} + +  /* @@ -257,6 +277,61 @@ typedef void* (*topo_sort_get_fn_t)(struct commit*); +/* + * from git:diffcore.h + */ + +struct diff_filespec { +	unsigned char sha1[20]; +	char *path; +	void *data; +	void *cnt_data; +	unsigned long size; +	int xfrm_flags;		 /* for use by the xfrm */ +	unsigned short mode;	 /* file mode */ +	unsigned sha1_valid : 1; /* if true, use sha1 and trust mode; +				  * if false, use the name and read from +				  * the filesystem. +				  */ +#define DIFF_FILE_VALID(spec) (((spec)->mode) != 0) +	unsigned should_free : 1; /* data should be free()'ed */ +	unsigned should_munmap : 1; /* data should be munmap()'ed */ +}; + +struct diff_filepair { +	struct diff_filespec *one; +	struct diff_filespec *two; +	unsigned short int score; +	char status; /* M C R N D U (see Documentation/diff-format.txt) */ +	unsigned source_stays : 1; /* all of R/C are copies */ +	unsigned broken_pair : 1; +	unsigned renamed_pair : 1; +}; + +#define DIFF_PAIR_UNMERGED(p) \ +	(!DIFF_FILE_VALID((p)->one) && !DIFF_FILE_VALID((p)->two)) + +#define DIFF_PAIR_RENAME(p) ((p)->renamed_pair) + +#define DIFF_PAIR_BROKEN(p) \ +	( (!DIFF_FILE_VALID((p)->one) != !DIFF_FILE_VALID((p)->two)) && \ +	  ((p)->broken_pair != 0) ) + +#define DIFF_PAIR_TYPE_CHANGED(p) \ +	((S_IFMT & (p)->one->mode) != (S_IFMT & (p)->two->mode)) + +#define DIFF_PAIR_MODE_CHANGED(p) ((p)->one->mode != (p)->two->mode) + +extern void diff_free_filepair(struct diff_filepair *); + +extern int diff_unmodified_pair(struct diff_filepair *); + +struct diff_queue_struct { +	struct diff_filepair **queue; +	int alloc; +	int nr; +}; +  /*   *  from git:diff.h @@ -352,6 +427,32 @@ enum color_diff {  }; +extern int diff_tree_sha1(const unsigned char *old, const unsigned char *new, +			  const char *base, struct diff_options *opt); + +extern int diff_root_tree_sha1(const unsigned char *new, const char *base, +			       struct diff_options *opt); + +extern int git_diff_ui_config(const char *var, const char *value); +extern void diff_setup(struct diff_options *); +extern int diff_opt_parse(struct diff_options *, const char **, int); +extern int diff_setup_done(struct diff_options *); + + +extern void diffcore_std(struct diff_options *); +extern void diff_flush(struct diff_options*); + + +/* diff-raw status letters */ +#define DIFF_STATUS_ADDED		'A' +#define DIFF_STATUS_COPIED		'C' +#define DIFF_STATUS_DELETED		'D' +#define DIFF_STATUS_MODIFIED		'M' +#define DIFF_STATUS_RENAMED		'R' +#define DIFF_STATUS_TYPE_CHANGED	'T' +#define DIFF_STATUS_UNKNOWN		'X' +#define DIFF_STATUS_UNMERGED		'U' +  /* @@ -458,5 +559,10 @@ extern struct commit *get_revision(struct rev_info *revs); +/* from git:log-tree.h */ + +int log_tree_commit(struct rev_info *, struct commit *); + +  #endif /* GIT_H */ | 
