Add first cut at a simple git tutorial.
[git.git] / commit.c
index e830564..a466f7d 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -1,8 +1,6 @@
 #include "tag.h"
 #include "commit.h"
 #include "cache.h"
-#include <string.h>
-#include <limits.h>
 
 const char *commit_type = "commit";
 
@@ -37,6 +35,8 @@ struct commit *lookup_commit(unsigned char *sha1)
                ret->object.type = commit_type;
                return ret;
        }
+       if (!obj->type)
+               obj->type = commit_type;
        return check_commit(obj, sha1);
 }
 
@@ -103,16 +103,21 @@ int parse_commit(struct commit *item)
                             sha1_to_hex(item->object.sha1));
        }
        ret = parse_commit_buffer(item, buffer, size);
+       if (!ret) {
+               item->buffer = buffer;
+               return 0;
+       }
        free(buffer);
        return ret;
 }
 
-void commit_list_insert(struct commit *item, struct commit_list **list_p)
+struct commit_list *commit_list_insert(struct commit *item, struct commit_list **list_p)
 {
        struct commit_list *new_list = xmalloc(sizeof(struct commit_list));
        new_list->item = item;
        new_list->next = *list_p;
        *list_p = new_list;
+       return new_list;
 }
 
 void free_commit_list(struct commit_list *list)