feat: detect polluted branch history and guide manual cleanup#35
Merged
feat: detect polluted branch history and guide manual cleanup#35
Conversation
- Add patch-based comparison using git cherry to detect duplicate commits - Detect when branch history diverged from parent (many commits but few unique patches) - Provide clear manual cleanup instructions instead of automatic destructive operations - Add IsRebaseInProgress() and IsCherryPickInProgress() to detect git state - Add AbortCherryPick() support for stack sync --abort - Simplify rebase logic by removing complex base branch filtering This prevents data loss when branches have diverged history and provides users with safe, actionable steps to rebuild branches manually.
Add mock implementations for: - GetUniqueCommits - GetUniqueCommitsByPatch - CherryPick - ResetHard - IsRebaseInProgress - IsCherryPickInProgress - AbortCherryPick
Update sync tests with mock expectations for: - GetUniqueCommitsByPatch - GetMergeBase - GetCommitHash (for parent comparison)
Owner
Author
|
🎉 This PR is included in version 1.4.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When parent branches are rebased, child branches can end up with "polluted" history containing duplicate commits with different SHAs. This causes complex rebase conflicts and can lead to data loss if the tool tries to automatically fix the issue.
Solution
This PR adds intelligent detection of polluted branch history and guides users through manual cleanup instead of attempting automatic fixes that could be destructive.
Key Changes
git cherryto detect duplicate commits by content, not just SHAExample Output
When polluted history is detected:
Safety
Fixes issues with rebased parent branches causing complex conflicts.