MCPcopy
hub / github.com/treeverse/dvc / merge_patterns

Function merge_patterns

dvc/pathspec_math.py:73–95  ·  view source on GitHub ↗

Merge two path specification patterns. This implementation merge two path specification patterns on different bases. It returns the longest common parent directory, and the patterns based on this new base directory.

(flavour, pattern_a, prefix_a, pattern_b, prefix_b)

Source from the content-addressed store, hash-verified

71
72
73def merge_patterns(flavour, pattern_a, prefix_a, pattern_b, prefix_b):
74 """
75 Merge two path specification patterns.
76
77 This implementation merge two path specification patterns on different
78 bases. It returns the longest common parent directory, and the patterns
79 based on this new base directory.
80 """
81 if not pattern_a:
82 return pattern_b, prefix_b
83 if not pattern_b:
84 return pattern_a, prefix_a
85
86 longest_common_dir = flavour.commonpath([prefix_a, prefix_b])
87 new_pattern_a = _change_dirname(prefix_a, pattern_a, longest_common_dir)
88 new_pattern_b = _change_dirname(prefix_b, pattern_b, longest_common_dir)
89
90 if len(prefix_a) <= len(prefix_b):
91 merged_pattern = new_pattern_a + new_pattern_b
92 else:
93 merged_pattern = new_pattern_b + new_pattern_a
94
95 return merged_pattern, longest_common_dir

Callers 4

_update_trieMethod · 0.90
_update_sub_repoMethod · 0.90
test_pattern_trie_fsFunction · 0.90

Calls 1

_change_dirnameFunction · 0.85

Tested by 2

test_pattern_trie_fsFunction · 0.72