]> git.ipfire.org Git - thirdparty/git.git/blobdiff - commit.c
Merge branch 'ak/corrected-commit-date'
[thirdparty/git.git] / commit.c
index 17abf92a2d2e2ab2c926400d48cc0db40ef7aa90..4694c4cf9bca07a4e86a9d9701053c9185df9ebd 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -14,7 +14,7 @@
 #include "mergesort.h"
 #include "commit-slab.h"
 #include "prio-queue.h"
-#include "sha1-lookup.h"
+#include "hash-lookup.h"
 #include "wt-status.h"
 #include "advice.h"
 #include "refs.h"
@@ -105,23 +105,23 @@ static timestamp_t parse_commit_date(const char *buf, const char *tail)
        return parse_timestamp(dateptr, NULL, 10);
 }
 
-static const unsigned char *commit_graft_sha1_access(size_t index, void *table)
+static const struct object_id *commit_graft_oid_access(size_t index, const void *table)
 {
-       struct commit_graft **commit_graft_table = table;
-       return commit_graft_table[index]->oid.hash;
+       const struct commit_graft * const *commit_graft_table = table;
+       return &commit_graft_table[index]->oid;
 }
 
-int commit_graft_pos(struct repository *r, const unsigned char *sha1)
+int commit_graft_pos(struct repository *r, const struct object_id *oid)
 {
-       return sha1_pos(sha1, r->parsed_objects->grafts,
-                       r->parsed_objects->grafts_nr,
-                       commit_graft_sha1_access);
+       return oid_pos(oid, r->parsed_objects->grafts,
+                      r->parsed_objects->grafts_nr,
+                      commit_graft_oid_access);
 }
 
 int register_commit_graft(struct repository *r, struct commit_graft *graft,
                          int ignore_dups)
 {
-       int pos = commit_graft_pos(r, graft->oid.hash);
+       int pos = commit_graft_pos(r, &graft->oid);
 
        if (0 <= pos) {
                if (ignore_dups)
@@ -232,7 +232,7 @@ struct commit_graft *lookup_commit_graft(struct repository *r, const struct obje
 {
        int pos;
        prepare_commit_graft(r);
-       pos = commit_graft_pos(r, oid->hash);
+       pos = commit_graft_pos(r, oid);
        if (pos < 0)
                return NULL;
        return r->parsed_objects->grafts[pos];
@@ -544,6 +544,17 @@ struct commit_list *commit_list_insert(struct commit *item, struct commit_list *
        return new_list;
 }
 
+int commit_list_contains(struct commit *item, struct commit_list *list)
+{
+       while (list) {
+               if (list->item == item)
+                       return 1;
+               list = list->next;
+       }
+
+       return 0;
+}
+
 unsigned commit_list_count(const struct commit_list *l)
 {
        unsigned c = 0;
@@ -563,6 +574,17 @@ struct commit_list *copy_commit_list(struct commit_list *list)
        return head;
 }
 
+struct commit_list *reverse_commit_list(struct commit_list *list)
+{
+       struct commit_list *next = NULL, *current, *backup;
+       for (current = list; current; current = backup) {
+               backup = current->next;
+               current->next = next;
+               next = current;
+       }
+       return next;
+}
+
 void free_commit_list(struct commit_list *list)
 {
        while (list)