go-diff icon indicating copy to clipboard operation
go-diff copied to clipboard

Implement a line-by-line diff output

Open zimmski opened this issue 9 years ago • 3 comments

At the moment it is only easy to output inline diff outputs but something like this https://github.com/sergi/go-diff/pull/67/files?diff=unified would be a nice addition for the output functions.

zimmski avatar Dec 04 '16 10:12 zimmski

any update?

mingrammer avatar Jan 23 '20 16:01 mingrammer

I came across this issue also looking for a line by line output or maybe a unified view. I was able to meet my requirements after reviewing: https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs and following the example there but in go-diff:

sample code:

dmp := diffmatchpatch.New()

fileAdmp, fileBdmp, dmpStrings := dmp.DiffLinesToChars(fileAtext, fileBtext)
diffs := dmp.DiffMain(fileAdmp, fileBdmp, false)
diffs = dmp.DiffCharsToLines(diffs, dmpStrings)
diffs = dmp.DiffCleanupSemantic(diffs)

Then using the dmp.DiffPrettyText(diffs) output I can see entire lines are being replaced, which is easier to read. I think that method would allow for a DiffPrettyTextLine function which instead of colours can offer a more unified diff like view, with plus minus or greater than less than options?

mgale avatar Sep 08 '20 03:09 mgale

I didn't realize it at the time but it also improves the PatchToText output:

List of patches
@@ -31,41 +31,43 @@
 ing%0A
-This same is unique to this file%0A
+A line that is new in the new file%0A
 thre

mgale avatar Sep 08 '20 04:09 mgale