feat(merge): Export Merge3WayWithTTL for configurable tombstone TTL (bd-6rl)
This commit is contained in:
@@ -292,12 +292,14 @@ func IsExpiredTombstone(issue Issue, ttl time.Duration) bool {
|
||||
}
|
||||
|
||||
func merge3Way(base, left, right []Issue) ([]Issue, []string) {
|
||||
return merge3WayWithTTL(base, left, right, DefaultTombstoneTTL)
|
||||
return Merge3WayWithTTL(base, left, right, DefaultTombstoneTTL)
|
||||
}
|
||||
|
||||
// merge3WayWithTTL performs a 3-way merge with configurable tombstone TTL.
|
||||
// Merge3WayWithTTL performs a 3-way merge with configurable tombstone TTL.
|
||||
// This is the core merge function that handles tombstone semantics.
|
||||
func merge3WayWithTTL(base, left, right []Issue, ttl time.Duration) ([]Issue, []string) {
|
||||
// Use this when you need to configure TTL for testing, debugging, or
|
||||
// per-repository configuration. For default TTL behavior, use merge3Way.
|
||||
func Merge3WayWithTTL(base, left, right []Issue, ttl time.Duration) ([]Issue, []string) {
|
||||
// Build maps for quick lookup by IssueKey
|
||||
baseMap := make(map[IssueKey]Issue)
|
||||
for _, issue := range base {
|
||||
|
||||
@@ -1648,7 +1648,7 @@ func TestMerge3WayWithTTL(t *testing.T) {
|
||||
left := []Issue{tombstone}
|
||||
right := []Issue{liveIssue}
|
||||
|
||||
result, _ := merge3WayWithTTL(base, left, right, shortTTL)
|
||||
result, _ := Merge3WayWithTTL(base, left, right, shortTTL)
|
||||
if len(result) != 1 {
|
||||
t.Fatalf("expected 1 issue, got %d", len(result))
|
||||
}
|
||||
@@ -1665,7 +1665,7 @@ func TestMerge3WayWithTTL(t *testing.T) {
|
||||
left := []Issue{tombstone}
|
||||
right := []Issue{liveIssue}
|
||||
|
||||
result, _ := merge3WayWithTTL(base, left, right, longTTL)
|
||||
result, _ := Merge3WayWithTTL(base, left, right, longTTL)
|
||||
if len(result) != 1 {
|
||||
t.Fatalf("expected 1 issue, got %d", len(result))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user