Skip to content

Latest commit

 

History

History
64 lines (51 loc) · 1.36 KB

README.md

File metadata and controls

64 lines (51 loc) · 1.36 KB

Differlent

This little code project implements longest common subsequence in Erlang, it is the foundation of finding the optimal diff between two files.

$ cat > a
monkey
cat
dog
bicycle
horse
cow
pig
$ grep -v bicycle < a > b

That will create two files, the other without the 'bicycle' line in it.

$ erl
1> Patch = differlent:unified_files("a", "b", 2).
2> file:write_file("patch", Patch).
3>

That will create an iolist and write it to a file. It is the patch presented as a unified diff format.

$ cat patch
--- a
+++ b
@@ -2,5 +2,4 @@
 cat
 dog
-bicycle
 horse
 cow

And the output of unix diff

$ diff -U 2 a b
--- a   2010-03-27 19:03:09.483175230 +0100
+++ b   2010-03-27 19:03:19.099174920 +0100
@@ -2,5 +2,4 @@
 cat
 dog
-bicycle
 horse
 cow

As you can see, it produces (nearly) the same output as unix diff presents a unified diff. I used two lines of context.

Attempting to use it as input to unix patch and this is what it says

$ patch --verbose --dry-run < patch 
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- a
|+++ b
--------------------------
Patching file a using Plan A...
Hunk #1 succeeded at 2.
done

No complaints about the format!