]> git.ipfire.org Git - thirdparty/git.git/blobdiff - shallow.c
The seventh batch
[thirdparty/git.git] / shallow.c
index 7711798127e49efaa18b6403ecf103f05e92f7e7..a0b181ba8a1636019d481c0bee850104f2a45973 100644 (file)
--- a/shallow.c
+++ b/shallow.c
@@ -678,8 +678,10 @@ void assign_shallow_commits_to_refs(struct shallow_info *info,
         * connect to old refs. If not (e.g. force ref updates) it'll
         * have to go down to the current shallow commits.
         */
-       head_ref(mark_uninteresting, NULL);
-       for_each_ref(mark_uninteresting, NULL);
+       refs_head_ref(get_main_ref_store(the_repository), mark_uninteresting,
+                     NULL);
+       refs_for_each_ref(get_main_ref_store(the_repository),
+                         mark_uninteresting, NULL);
 
        /* Mark potential bottoms so we won't go out of bound */
        for (i = 0; i < nr_shallow; i++) {
@@ -782,8 +784,8 @@ static void post_assign_shallow(struct shallow_info *info,
        info->nr_theirs = dst;
 
        memset(&ca, 0, sizeof(ca));
-       head_ref(add_ref, &ca);
-       for_each_ref(add_ref, &ca);
+       refs_head_ref(get_main_ref_store(the_repository), add_ref, &ca);
+       refs_for_each_ref(get_main_ref_store(the_repository), add_ref, &ca);
 
        /* Remove unreachable shallow commits from "ours" */
        for (i = dst = 0; i < info->nr_ours; i++) {
@@ -794,12 +796,16 @@ static void post_assign_shallow(struct shallow_info *info,
                if (!*bitmap)
                        continue;
                for (j = 0; j < bitmap_nr; j++)
-                       if (bitmap[0][j] &&
-                           /* Step 7, reachability test at commit level */
-                           !repo_in_merge_bases_many(the_repository, c, ca.nr, ca.commits)) {
-                               update_refstatus(ref_status, info->ref->nr, *bitmap);
-                               dst++;
-                               break;
+                       if (bitmap[0][j]) {
+                               /* Step 7, reachability test at commit level */
+                               int ret = repo_in_merge_bases_many(the_repository, c, ca.nr, ca.commits, 1);
+                               if (ret < 0)
+                                       exit(128);
+                               if (!ret) {
+                                       update_refstatus(ref_status, info->ref->nr, *bitmap);
+                                       dst++;
+                                       break;
+                               }
                        }
        }
        info->nr_ours = dst;
@@ -818,8 +824,10 @@ int delayed_reachability_test(struct shallow_info *si, int c)
                        struct commit_array ca;
 
                        memset(&ca, 0, sizeof(ca));
-                       head_ref(add_ref, &ca);
-                       for_each_ref(add_ref, &ca);
+                       refs_head_ref(get_main_ref_store(the_repository),
+                                     add_ref, &ca);
+                       refs_for_each_ref(get_main_ref_store(the_repository),
+                                         add_ref, &ca);
                        si->commits = ca.commits;
                        si->nr_commits = ca.nr;
                }
@@ -827,7 +835,10 @@ int delayed_reachability_test(struct shallow_info *si, int c)
                si->reachable[c] = repo_in_merge_bases_many(the_repository,
                                                            commit,
                                                            si->nr_commits,
-                                                           si->commits);
+                                                           si->commits,
+                                                           1);
+               if (si->reachable[c] < 0)
+                       exit(128);
                si->need_reachability_test[c] = 0;
        }
        return si->reachable[c];