Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork209
Closed
Description
Describe the bug
Diff cannot be applied withgit apply
To Reproduce
- original content
constworld:string='world',p:number|undefined=42;console.log(`Hello,${world}!`);
- new content
constworld:string='world';constp:number|undefined=42;console.log(`Hello,${world}!`);
- code to create diff (Kotlin)
/** * @param contextSize * How many lines of context around each changed line should be included.*/classDiffFactory(privatevalcontextSize:Int) {companionobject {privateconstvalLINE_SEPARATOR="\n" }/** * Creates a git-apply compatible diff.*/funcomputeDiff(filename:String,originalContent:String,newContent:String ):String=UnifiedDiffUtils.generateUnifiedDiff("a/$filename",// a/ and b/ required for git-apply compatibility"b/$filename", originalContent.split(LINE_SEPARATOR),DiffUtils.diff( originalContent, newContent,NullDiffAlgorithmListener ), contextSize ).joinToString(LINE_SEPARATOR)}
- With
contextSize = 3the following diff gets created:
--- a/examples/unchain-variable-declaration.js+++ b/examples/unchain-variable-declaration.js@@ -1,5 +1,5 @@-const world: string = 'world',- p: number | undefined = 42;+const world: string = 'world';+const p: number | undefined = 42; console.log(`Hello, ${world}!`);(important: line with 1 space at the end - I've also added an empty newline to support git apply call from file instead of system in)
5.git apply fails
> git apply example.differror: patch failed: examples/unchain-variable-declaration.js:1error: examples/unchain-variable-declaration.js: patch does not applyExpected behavior
Git apply works with the following patch:
--- a/examples/unchain-variable-declaration.js+++ b/examples/unchain-variable-declaration.js@@ -1,4 +1,4 @@-const world: string = 'world',- p: number | undefined = 42;+const world: string = 'world';+const p: number | undefined = 42; console.log(`Hello, ${world}!`);The difference is that the index is limited to 1,4 (original input is 4 lines long).
System
- Kotlin 1.4
Metadata
Metadata
Assignees
Labels
No labels