]> git.ipfire.org Git - thirdparty/git.git/blobdiff - commit-reach.c
Merge branch 'pb/t4014-unslave'
[thirdparty/git.git] / commit-reach.c
index 3ea174788a4f0229460bad65373e974cc3f87c64..43e303d5f25b8dc51bee95ebceb52d0818fa858f 100644 (file)
@@ -10,7 +10,6 @@
 #include "commit-reach.h"
 
 /* Remember to update object flag allocation in object.h */
-#define REACHABLE       (1u<<15)
 #define PARENT1                (1u<<16)
 #define PARENT2                (1u<<17)
 #define STALE          (1u<<18)
@@ -284,7 +283,9 @@ struct commit_list *repo_get_merge_bases(struct repository *r,
 /*
  * Is "commit" a descendant of one of the elements on the "with_commit" list?
  */
-int is_descendant_of(struct commit *commit, struct commit_list *with_commit)
+static int repo_is_descendant_of(struct repository *r,
+                                struct commit *commit,
+                                struct commit_list *with_commit)
 {
        if (!with_commit)
                return 1;
@@ -302,13 +303,18 @@ int is_descendant_of(struct commit *commit, struct commit_list *with_commit)
 
                        other = with_commit->item;
                        with_commit = with_commit->next;
-                       if (in_merge_bases(other, commit))
+                       if (repo_in_merge_bases_many(r, other, 1, &commit))
                                return 1;
                }
                return 0;
        }
 }
 
+int is_descendant_of(struct commit *commit, struct commit_list *with_commit)
+{
+       return repo_is_descendant_of(the_repository, commit, with_commit);
+}
+
 /*
  * Is "commit" an ancestor of one of the "references"?
  */
@@ -349,7 +355,15 @@ int repo_in_merge_bases(struct repository *r,
                        struct commit *commit,
                        struct commit *reference)
 {
-       return repo_in_merge_bases_many(r, commit, 1, &reference);
+       int res;
+       struct commit_list *list = NULL;
+       struct commit_list **next = &list;
+
+       next = commit_list_append(commit, next);
+       res = repo_is_descendant_of(r, reference, list);
+       free_commit_list(list);
+
+       return res;
 }
 
 struct commit_list *reduce_heads(struct commit_list *heads)