diff options
Diffstat (limited to 'commit.h')
| -rw-r--r-- | commit.h | 41 | 
1 files changed, 38 insertions, 3 deletions
| @@ -26,13 +26,25 @@ extern int save_commit_buffer;  extern const char *commit_type;  /* While we can decorate any object with a name, it's only used for commits.. */ -extern struct decoration name_decoration;  struct name_decoration {  	struct name_decoration *next;  	int type; -	char name[1]; +	char name[FLEX_ARRAY];  }; +enum decoration_type { +	DECORATION_NONE = 0, +	DECORATION_REF_LOCAL, +	DECORATION_REF_REMOTE, +	DECORATION_REF_TAG, +	DECORATION_REF_STASH, +	DECORATION_REF_HEAD, +	DECORATION_GRAFTED, +}; + +void add_name_decoration(enum decoration_type type, const char *name, struct object *obj); +const struct name_decoration *get_name_decoration(const struct object *obj); +  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, @@ -159,6 +171,7 @@ extern void get_commit_format(const char *arg, struct rev_info *);  extern const char *format_subject(struct strbuf *sb, const char *msg,  				  const char *line_separator);  extern void userformat_find_requirements(const char *fmt, struct userformat_want *w); +extern int commit_format_is_empty(enum cmit_fmt);  extern void format_commit_message(const struct commit *commit,  				  const char *format, struct strbuf *sb,  				  const struct pretty_print_context *context); @@ -271,6 +284,7 @@ extern void assign_shallow_commits_to_refs(struct shallow_info *info,  					   int *ref_status);  extern int delayed_reachability_test(struct shallow_info *si, int c);  extern void prune_shallow(int show_only); +extern struct trace_key trace_shallow;  int is_descendant_of(struct commit *, struct commit_list *);  int in_merge_bases(struct commit *, struct commit *); @@ -312,6 +326,25 @@ extern struct commit_extra_header *read_commit_extra_headers(struct commit *, co  extern void free_commit_extra_headers(struct commit_extra_header *extra); +/* + * Search the commit object contents given by "msg" for the header "key". + * Returns a pointer to the start of the header contents, or NULL. The length + * of the header, up to the first newline, is returned via out_len. + * + * Note that some headers (like mergetag) may be multi-line. It is the caller's + * responsibility to parse further in this case! + */ +extern const char *find_commit_header(const char *msg, const char *key, +				      size_t *out_len); + +/* Find the end of the log message, the right place for a new trailer. */ +extern int ignore_non_trailer(struct strbuf *sb); + +typedef void (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra, +				 void *cb_data); + +extern void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data); +  struct merge_remote_desc {  	struct object *obj; /* the named object, could be a tag */  	const char *name; @@ -327,6 +360,8 @@ struct commit *get_merge_parent(const char *name);  extern int parse_signed_commit(const struct commit *commit,  			       struct strbuf *message, struct strbuf *signature); +extern int remove_signature(struct strbuf *buf); +  extern void print_commit_list(struct commit_list *list,  			      const char *format_cur,  			      const char *format_last); @@ -338,7 +373,7 @@ extern void print_commit_list(struct commit_list *list,   * at all.  This may allocate memory for sig->gpg_output, sig->gpg_status,   * sig->signer and sig->key.   */ -extern void check_commit_signature(const struct commit* commit, struct signature_check *sigc); +extern void check_commit_signature(const struct commit *commit, struct signature_check *sigc);  int compare_commits_by_commit_date(const void *a_, const void *b_, void *unused); | 
