Fix: Treat same-ID updates as normal updates, not collisions (bd-0134cc5a)
This commit is contained in:
@@ -206,24 +206,12 @@ func handleCollisions(ctx context.Context, sqliteStore *sqlite.SQLiteStorage, is
|
|||||||
result.CollisionIDs = append(result.CollisionIDs, collision.ID)
|
result.CollisionIDs = append(result.CollisionIDs, collision.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle collisions - with hash IDs, collisions shouldn't happen
|
// With hash IDs, "collisions" (same ID, different content) are actually UPDATES
|
||||||
|
// Hash IDs are based on creation content and remain stable across updates
|
||||||
|
// So same ID + different fields = normal update operation, not a collision
|
||||||
|
// The collisionResult.Collisions list represents issues that will be updated
|
||||||
if len(collisionResult.Collisions) > 0 {
|
if len(collisionResult.Collisions) > 0 {
|
||||||
// Hash-based IDs make collisions extremely unlikely (same ID = same content)
|
result.Updated = len(collisionResult.Collisions)
|
||||||
// If we get here, it's likely a bug or manual ID manipulation
|
|
||||||
return nil, fmt.Errorf("collision detected for issues: %v (this should not happen with hash-based IDs)", result.CollisionIDs)
|
|
||||||
|
|
||||||
// Remove colliding issues from the list (they're already processed)
|
|
||||||
filteredIssues := make([]*types.Issue, 0)
|
|
||||||
collidingIDs := make(map[string]bool)
|
|
||||||
for _, collision := range collisionResult.Collisions {
|
|
||||||
collidingIDs[collision.ID] = true
|
|
||||||
}
|
|
||||||
for _, issue := range issues {
|
|
||||||
if !collidingIDs[issue.ID] {
|
|
||||||
filteredIssues = append(filteredIssues, issue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return filteredIssues, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Phase 4: Renames removed - obsolete with hash IDs (bd-8e05)
|
// Phase 4: Renames removed - obsolete with hash IDs (bd-8e05)
|
||||||
|
|||||||
Reference in New Issue
Block a user