summaryrefslogtreecommitdiffabout
path: root/git.h
Side-by-side diff
Diffstat (limited to 'git.h') (more/less context) (show whitespace changes)
-rw-r--r--git.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/git.h b/git.h
index dfa3542..a3f977c 100644
--- a/git.h
+++ b/git.h
@@ -143,96 +143,109 @@ extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */
*/
struct object_list {
struct object *item;
struct object_list *next;
};
struct object_refs {
unsigned count;
struct object *base;
struct object *ref[FLEX_ARRAY]; /* more */
};
struct object_array {
unsigned int nr;
unsigned int alloc;
struct object_array_entry {
struct object *item;
const char *name;
} *objects;
};
#define TYPE_BITS 3
#define FLAG_BITS 27
/*
* The object type is stored in 3 bits.
*/
struct object {
unsigned parsed : 1;
unsigned used : 1;
unsigned type : TYPE_BITS;
unsigned flags : FLAG_BITS;
unsigned char sha1[20];
};
/*
* from git:tree.h
*/
struct tree {
struct object object;
void *buffer;
unsigned long size;
};
+struct tree *lookup_tree(const unsigned char *sha1);
+int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size);
+int parse_tree(struct tree *tree);
+struct tree *parse_tree_indirect(const unsigned char *sha1);
+
+typedef int (*read_tree_fn_t)(const unsigned char *, const char *, int, const char *, unsigned int, int);
+
+extern int read_tree_recursive(struct tree *tree,
+ const char *base, int baselen,
+ int stage, const char **match,
+ read_tree_fn_t fn);
+
+extern int read_tree(struct tree *tree, int stage, const char **paths);
/* from git:commit.h */
struct commit_list {
struct commit *item;
struct commit_list *next;
};
struct commit {
struct object object;
void *util;
unsigned long date;
struct commit_list *parents;
struct tree *tree;
char *buffer;
};
struct commit *lookup_commit(const unsigned char *sha1);
struct commit *lookup_commit_reference(const unsigned char *sha1);
struct commit *lookup_commit_reference_gently(const unsigned char *sha1,
int quiet);
int parse_commit_buffer(struct commit *item, void *buffer, unsigned long size);
int parse_commit(struct commit *item);
struct commit_list * commit_list_insert(struct commit *item, struct commit_list **list_p);
struct commit_list * insert_by_date(struct commit *item, struct commit_list **list);
void free_commit_list(struct commit_list *list);
void sort_by_date(struct commit_list **list);
/* Commit formats */
enum cmit_fmt {
CMIT_FMT_RAW,
CMIT_FMT_MEDIUM,
CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM,
CMIT_FMT_SHORT,
CMIT_FMT_FULL,
CMIT_FMT_FULLER,
CMIT_FMT_ONELINE,
CMIT_FMT_EMAIL,
CMIT_FMT_UNSPECIFIED,
};