X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=commit.c;h=f735f981bb2d4d7594e416bcb728ac06d09ebd0c;hb=f8ff0c0641a14770a2214fffbd4271b1ea3a0d61;hp=59e93d4590da927cc956f043407eaff79cc308aa;hpb=e8c80638abc99928dba9ac832589749a531e2e21;p=git.git diff --git a/commit.c b/commit.c index 59e93d45..f735f981 100644 --- a/commit.c +++ b/commit.c @@ -3,6 +3,8 @@ #include "commit.h" #include "cache.h" +int save_commit_buffer = 1; + struct sort_node { /* @@ -38,23 +40,32 @@ enum cmit_fmt get_commit_format(const char *arg) die("invalid --pretty format"); } -static struct commit *check_commit(struct object *obj, const unsigned char *sha1) +static struct commit *check_commit(struct object *obj, + const unsigned char *sha1, + int quiet) { if (obj->type != commit_type) { - error("Object %s is a %s, not a commit", - sha1_to_hex(sha1), obj->type); + if (!quiet) + error("Object %s is a %s, not a commit", + sha1_to_hex(sha1), obj->type); return NULL; } return (struct commit *) obj; } -struct commit *lookup_commit_reference(const unsigned char *sha1) +struct commit *lookup_commit_reference_gently(const unsigned char *sha1, + int quiet) { struct object *obj = deref_tag(parse_object(sha1)); if (!obj) return NULL; - return check_commit(obj, sha1); + return check_commit(obj, sha1, quiet); +} + +struct commit *lookup_commit_reference(const unsigned char *sha1) +{ + return lookup_commit_reference_gently(sha1, 0); } struct commit *lookup_commit(const unsigned char *sha1) @@ -69,7 +80,7 @@ struct commit *lookup_commit(const unsigned char *sha1) } if (!obj->type) obj->type = commit_type; - return check_commit(obj, sha1); + return check_commit(obj, sha1, 0); } static unsigned long parse_commit_date(const char *buf) @@ -255,7 +266,7 @@ int parse_commit(struct commit *item) sha1_to_hex(item->object.sha1)); } ret = parse_commit_buffer(item, buffer, size); - if (!ret) { + if (save_commit_buffer && !ret) { item->buffer = buffer; return 0; } @@ -348,7 +359,7 @@ static int get_one_line(const char *msg, unsigned long len) static int add_user_info(const char *what, enum cmit_fmt fmt, char *buf, const char *line) { char *date; - unsigned int namelen; + int namelen; unsigned long time; int tz, ret;