#define USE_THE_REPOSITORY_VARIABLE #include "git-compat-util.h" #include "pseudo-merge.h" #include "date.h" #include "oid-array.h" #include "strbuf.h" #include "config.h" #include "string-list.h" #include "refs.h" #include "pack-bitmap.h" #include "commit.h" #include "alloc.h" #include "progress.h" #include "hex.h" #define DEFAULT_PSEUDO_MERGE_DECAY … #define DEFAULT_PSEUDO_MERGE_MAX_MERGES … #define DEFAULT_PSEUDO_MERGE_SAMPLE_RATE … #define DEFAULT_PSEUDO_MERGE_THRESHOLD … #define DEFAULT_PSEUDO_MERGE_STABLE_THRESHOLD … #define DEFAULT_PSEUDO_MERGE_STABLE_SIZE … static double gitexp(double base, int exp) { … } static uint32_t pseudo_merge_group_size(const struct pseudo_merge_group *group, const struct pseudo_merge_matches *matches, uint32_t i) { … } static void pseudo_merge_group_init(struct pseudo_merge_group *group) { … } void pseudo_merge_group_release(struct pseudo_merge_group *group) { … } static int pseudo_merge_config(const char *var, const char *value, const struct config_context *ctx, void *cb_data) { … } void load_pseudo_merges_from_config(struct repository *r, struct string_list *list) { … } static int find_pseudo_merge_group_for_ref(const char *refname, const char *referent UNUSED, const struct object_id *oid, int flags UNUSED, void *_data) { … } static struct commit *push_pseudo_merge(struct pseudo_merge_group *group) { … } static struct pseudo_merge_commit_idx *pseudo_merge_idx(kh_oid_map_t *pseudo_merge_commits, const struct object_id *oid) { … } #define MIN_PSEUDO_MERGE_SIZE … static void select_pseudo_merges_1(struct bitmap_writer *writer, struct pseudo_merge_group *group, struct pseudo_merge_matches *matches) { … } static int commit_date_cmp(const void *va, const void *vb) { … } static void sort_pseudo_merge_matches(struct pseudo_merge_matches *matches) { … } void select_pseudo_merges(struct bitmap_writer *writer) { … } void free_pseudo_merge_map(struct pseudo_merge_map *pm) { … } struct pseudo_merge_commit_ext { … }; static int pseudo_merge_ext_at(const struct pseudo_merge_map *pm, struct pseudo_merge_commit_ext *ext, size_t at) { … } struct ewah_bitmap *pseudo_merge_bitmap(const struct pseudo_merge_map *pm, struct pseudo_merge *merge) { … } struct pseudo_merge *use_pseudo_merge(const struct pseudo_merge_map *pm, struct pseudo_merge *merge) { … } static struct pseudo_merge *pseudo_merge_at(const struct pseudo_merge_map *pm, struct object_id *oid, size_t want) { … } struct pseudo_merge_commit { … }; #define PSEUDO_MERGE_COMMIT_RAWSZ … static void read_pseudo_merge_commit_at(struct pseudo_merge_commit *merge, const unsigned char *at) { … } static int nth_pseudo_merge_ext(const struct pseudo_merge_map *pm, struct pseudo_merge_commit_ext *ext, struct pseudo_merge_commit *merge, uint32_t n) { … } static unsigned apply_pseudo_merge(const struct pseudo_merge_map *pm, struct pseudo_merge *merge, struct bitmap *result, struct bitmap *roots) { … } static int pseudo_merge_commit_cmp(const void *va, const void *vb) { … } static struct pseudo_merge_commit *find_pseudo_merge(const struct pseudo_merge_map *pm, uint32_t pos) { … } int apply_pseudo_merges_for_commit(const struct pseudo_merge_map *pm, struct bitmap *result, struct commit *commit, uint32_t commit_pos) { … } int cascade_pseudo_merges(const struct pseudo_merge_map *pm, struct bitmap *result, struct bitmap *roots) { … } struct pseudo_merge *pseudo_merge_for_parents(const struct pseudo_merge_map *pm, struct bitmap *parents) { … }