fix(apply_diff): exclude exact REPLACE marker from merge conflict check #4922
+36
−5
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.
Fixes #4680
Summary
Previously, the validation logic incorrectly flagged the tool's own required closing marker
>>>>>>> REPLACEas a "special marker" in the diff content, causing the error:This prevented the apply_diff tool from working correctly even when the diff was properly formatted.
Root Cause
The validation checked if lines start with the REPLACE_PREFIX (
>>>>>>>) to catch git merge conflict markers, but this also caught the legitimate>>>>>>> REPLACEclosing marker that is part of the tool's own syntax.Changes
validateMarkerSequencing()to exclude the exact>>>>>>> REPLACEmarker from the merge conflict check&& marker !== REPLACEto both START and AFTER_SEARCH state checks for REPLACE_PREFIXThis allows the
>>>>>>> REPLACEmarker to be recognized as the valid closing delimiter for diff blocks while still catching actual git merge conflict markers.Test Plan
Co-Authored-By: Claude [email protected]