MCPcopy Create free account
hub / github.com/git/git / apply_pseudo_merges_for_commit

Function apply_pseudo_merges_for_commit

pseudo-merge.c:663–714  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

661}
662
663int apply_pseudo_merges_for_commit(const struct pseudo_merge_map *pm,
664 struct bitmap *result,
665 struct commit *commit, uint32_t commit_pos)
666{
667 struct pseudo_merge *merge;
668 struct pseudo_merge_commit merge_commit;
669 int ret = 0;
670
671 if (!find_pseudo_merge(pm, commit_pos, &merge_commit))
672 return 0;
673
674 if (merge_commit.pseudo_merge_ofs & ((uint64_t)1<<63)) {
675 struct pseudo_merge_commit_ext ext = { 0 };
676 off_t ofs = merge_commit.pseudo_merge_ofs & ~((uint64_t)1<<63);
677 uint32_t i;
678
679 if (pseudo_merge_ext_at(pm, &ext, ofs) < 0) {
680 warning(_("could not read extended pseudo-merge table "
681 "for commit %s"),
682 oid_to_hex(&commit->object.oid));
683 return ret;
684 }
685
686 for (i = 0; i < ext.nr; i++) {
687 if (nth_pseudo_merge_ext(pm, &ext, &merge_commit, i) < 0)
688 return ret;
689
690 merge = pseudo_merge_at(pm, &commit->object.oid,
691 merge_commit.pseudo_merge_ofs);
692
693 if (!merge)
694 return ret;
695
696 if (apply_pseudo_merge(pm, merge, result, NULL))
697 ret++;
698 }
699 } else {
700 merge = pseudo_merge_at(pm, &commit->object.oid,
701 merge_commit.pseudo_merge_ofs);
702
703 if (!merge)
704 return ret;
705
706 if (apply_pseudo_merge(pm, merge, result, NULL))
707 ret++;
708 }
709
710 if (ret)
711 cascade_pseudo_merges(pm, result, NULL);
712
713 return ret;
714}
715
716int cascade_pseudo_merges(const struct pseudo_merge_map *pm,
717 struct bitmap *result,

Callers 1

Calls 8

find_pseudo_mergeFunction · 0.85
pseudo_merge_ext_atFunction · 0.85
warningFunction · 0.85
oid_to_hexFunction · 0.85
nth_pseudo_merge_extFunction · 0.85
pseudo_merge_atFunction · 0.85
apply_pseudo_mergeFunction · 0.85
cascade_pseudo_mergesFunction · 0.85

Tested by

no test coverage detected