X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/732d68d240b95dc428c92fc94bce9adb8912094e..66cacd053ba900c8eb3b7962027370c84a97f990:/git.h diff --git a/git.h b/git.h index b1e4828..a1d1c4b 100644 --- a/git.h +++ b/git.h @@ -124,6 +124,19 @@ static inline ssize_t xwrite(int fd, const void *buf, size_t len) */ +enum object_type { + OBJ_NONE = 0, + OBJ_COMMIT = 1, + OBJ_TREE = 2, + OBJ_BLOB = 3, + OBJ_TAG = 4, + /* 5 for future expansion */ + OBJ_OFS_DELTA = 6, + OBJ_REF_DELTA = 7, + OBJ_BAD, +}; + + /* Convert to/from hex/sha1 representation */ #define MINIMUM_ABBREV 4 #define DEFAULT_ABBREV 7 @@ -228,6 +241,8 @@ extern void free_grep_patterns(struct grep_opt *opt); * from git:object.h */ +extern const char *type_names[9]; + struct object_list { struct object *item; struct object_list *next; @@ -263,6 +278,10 @@ struct object { }; +/** Returns the object, having parsed it to find out what it is. **/ +struct object *parse_object(const unsigned char *sha1); + + /* * from git:tree.h */ @@ -343,6 +362,25 @@ typedef void* (*topo_sort_get_fn_t)(struct commit*); +/* + * from git:tag.h + */ + +extern const char *tag_type; + +struct tag { + struct object object; + struct object *tagged; + char *tag; + char *signature; /* not actually implemented */ +}; + +extern struct tag *lookup_tag(const unsigned char *sha1); +extern int parse_tag_buffer(struct tag *item, void *data, unsigned long size); +extern int parse_tag(struct tag *item); +extern struct object *deref_tag(struct object *, const char *, int); + + /* * from git:diffcore.h */ @@ -631,4 +669,31 @@ int log_tree_commit(struct rev_info *, struct commit *); +/* from git:archive.h */ + +struct archiver_args { + const char *base; + struct tree *tree; + const unsigned char *commit_sha1; + time_t time; + const char **pathspec; + unsigned int verbose : 1; + void *extra; +}; + +typedef int (*write_archive_fn_t)(struct archiver_args *); + +typedef void *(*parse_extra_args_fn_t)(int argc, const char **argv); + +struct archiver { + const char *name; + struct archiver_args args; + write_archive_fn_t write_archive; + parse_extra_args_fn_t parse_extra; +}; + +extern int write_tar_archive(struct archiver_args *); +extern int write_zip_archive(struct archiver_args *); +extern void *parse_extra_zip_args(int argc, const char **argv); + #endif /* GIT_H */