feat(sync): add per-field merge strategies for conflict resolution
Implements configurable per-field merge strategies (hq-ew1mbr.11):
- Add FieldStrategy type with strategies: newest, max, union, manual
- Add conflict.fields config section for per-field overrides
- compaction_level defaults to "max" (highest value wins)
- estimated_minutes defaults to "manual" (flags for user resolution)
- labels defaults to "union" (set merge)
Manual conflicts are displayed during sync with resolution options:
bd sync --ours / --theirs, or bd resolve <id> <field> <value>
Config example:
conflict:
strategy: newest
fields:
compaction_level: max
estimated_minutes: manual
labels: union
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
committed by
Steve Yegge
parent
e0dc3a37c3
commit
9a9704b451
@@ -285,7 +285,7 @@ func TestInteractiveResolutionMerge(t *testing.T) {
|
||||
|
||||
// mergeFieldLevel should pick local values (newer) for scalars
|
||||
// and union for labels
|
||||
merged := mergeFieldLevel(nil, local, remote)
|
||||
merged, _ := mergeFieldLevel(nil, local, remote)
|
||||
|
||||
if merged.Title != "Local title" {
|
||||
t.Errorf("Expected title 'Local title', got %q", merged.Title)
|
||||
|
||||
Reference in New Issue
Block a user