MCPcopy Index your code
hub / github.com/git/git / for_each_bitmapped_object

Function for_each_bitmapped_object

pack-bitmap.c:2059–2101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2057}
2058
2059int for_each_bitmapped_object(struct bitmap_index *bitmap_git,
2060 struct list_objects_filter_options *filter,
2061 show_reachable_fn show_reach,
2062 void *payload)
2063{
2064 struct bitmap *filtered_bitmap = NULL;
2065 uint32_t objects_nr;
2066 size_t full_word_count;
2067 int ret;
2068
2069 if (!can_filter_bitmap(filter)) {
2070 ret = -1;
2071 goto out;
2072 }
2073
2074 objects_nr = bitmap_num_objects(bitmap_git);
2075 full_word_count = objects_nr / BITS_IN_EWORD;
2076
2077 /* We start from the all-1 bitmap and then filter down from there. */
2078 filtered_bitmap = bitmap_word_alloc(full_word_count + !!(objects_nr % BITS_IN_EWORD));
2079 memset(filtered_bitmap->words, 0xff, full_word_count * sizeof(*filtered_bitmap->words));
2080 for (size_t i = full_word_count * BITS_IN_EWORD; i < objects_nr; i++)
2081 bitmap_set(filtered_bitmap, i);
2082
2083 if (filter_bitmap(bitmap_git, NULL, filtered_bitmap, filter) < 0) {
2084 ret = -1;
2085 goto out;
2086 }
2087
2088 show_objects_for_type(bitmap_git, filtered_bitmap,
2089 OBJ_COMMIT, show_reach, payload);
2090 show_objects_for_type(bitmap_git, filtered_bitmap,
2091 OBJ_TREE, show_reach, payload);
2092 show_objects_for_type(bitmap_git, filtered_bitmap,
2093 OBJ_BLOB, show_reach, payload);
2094 show_objects_for_type(bitmap_git, filtered_bitmap,
2095 OBJ_TAG, show_reach, payload);
2096
2097 ret = 0;
2098out:
2099 bitmap_free(filtered_bitmap);
2100 return ret;
2101}
2102
2103struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs,
2104 int filter_provided_objects)

Callers 1

batch_each_objectFunction · 0.85

Calls 7

can_filter_bitmapFunction · 0.85
bitmap_num_objectsFunction · 0.85
bitmap_word_allocFunction · 0.85
bitmap_setFunction · 0.85
filter_bitmapFunction · 0.85
show_objects_for_typeFunction · 0.85
bitmap_freeFunction · 0.85

Tested by

no test coverage detected