"when you use 'diff', what do you think?"html
当我第1次用diff的时候,我是这样想的:2个文件的不一样处有不少种状况,diff是如何处理的呢?git
搜了几篇关于用法的网页:都是讲参数、输出结果的解读。。都不能回答上面的问题。github
diff用3种行为描述不一样之处,并经过这3种操做,可使2个文件变为相同。算法
3种操做是:add, delete, change;htm
但实际状况是:有多种不一样的操做使2个文件相同,那么diff用的是什么算法?ip
举例:it
file1; file2;io
1, 4,file
2, 1,cgi
3, 3,
4, 2,
diff的第1个操做输出是:
0a1
>4
即,file1前添加4,,使第1行与file2相同;
可是,要使2文件的第1行相同,还可能的操做是:
方法1》file2删除第1行;
方法2》file1删除前3行。
为何diff选择了上述的输出?
因而我又搜索了相关资料,发现diff的背后并不简单,不过有1点是肯定的:那就是算法!
有关算法的资料:
http://en.wikipedia.org/wiki/Diff#Algorithm
http://stackoverflow.com/questions/805626/diff-algorithm
http://c2.com/cgi/wiki?DiffAlgorithm
http://www.faqs.org/rfcs/rfc3284.html
https://github.com/paulgb/simplediff
固然我并非说非要去了解这些算法,相反我以为并不须要了解他们。
但到此为止,算是解除了心头的疑惑;
那么,该用diff作些什么,何时用diff,何时diff的结果对咱们有帮助呢?
我刚用,还不能回答;
我试了1下,对1个修改过的文件和原文件;
结果不错:修改的内容都是添加,因而diff的结果把我添加的新内容都显示出来了!