Git diff/patch如何工作以及安全性如何?
关于它们是如何工作的,我想知道一些低级的工作内容:Git diff/patch如何工作以及安全性如何?,git,diff,patch,levenshtein-distance,lcs,Git,Diff,Patch,Levenshtein Distance,Lcs,关于它们是如何工作的,我想知道一些低级的工作内容: 什么会触发合并冲突 工具是否也使用上下文来应用修补程序 他们如何处理实际上不修改源代码行为的更改?例如,交换函数定义位置 关于安全性,老实说,巨大的Linux内核存储库是它们安全性的证明。但我想知道以下几点: 对于用户应该知道的工具,是否有任何警告/限制 这些算法是否已被证明不会产生错误的结果 如果没有,是否有提出集成测试的实现/论文至少在经验上证明了它们是无错误的?类似于这些文件和文件的内容 同样,关于上一点,Linux存储库应该足够了,但我
gitmerge
试图自行解决合并冲突。在一些罕见的情况下,这里可能会出问题——有一个例子即将结束
这些算法是否已被证明不会产生错误的结果?
如果没有,是否有提出集成测试的实现/论文至少在经验上证明了它们是无错误的
在这种情况下,“错误的结果”是一个相当不具体的术语;我认为这是无法证明的。经验证明,将diff a b
生成的补丁应用于文件a
在任何情况下都会生成文件b
源代码即使更改,也不会有太大的更改(特别是由于实现的算法和语法限制),但是安全性可以推广到通用文本文件吗
同样,diff/patch/git并不区分源代码和其他文本文件。git在通用文本文件上的效果和在源代码上的效果一样好
我非常确定Git是完全可靠的,因为它确实有完整的
提交的历史记录,可以遍历历史记录。我想要一些
指向acade的指针
[PatchPlan version 0.1]------------------------------------
* Description :
* Old Version :
* New Version :
* URL :
* Patch made by :
* Comments :
* Used tools :
-----------------------------------------------------------
[C ] ... "dir1/dir2/filename.ext" MD5
N:"dir3/dir4/newfile.ext" MD5
[C ] ... "dir1/dir3/filename.ext" MD5
P:"dir1/dir3/patchfile.ext.patch" TYPE MD5
[D ] ... "dir1/dir2/filename.ext" MD5
[A ] ... "dir1/dir2/filename.ext"
N:"dir3/dir4/newfile.ext" MD5
[AD] ... "dir1/dir2/newdirname"
-----------------------------------------------------------
[C ] ... - Status field
C - Changed
D - Deleted
A - Added
DE - Deleted empty directory
DD - Deleted directory
AD - Added directory
... - place reserved for flags like overwrite,
force deletion etc. flags are separated by
spaces from other fields
"dir1/dir2/filename.ext" - relative path of patched file
MD5 - 32 letters, i.e. cb5bc9f48388568178f24e6294ea782b
N:"dir3/dir4/newfile.ext" MD5
- path for replacement file relative to directory
with new files, i.e. temp directory where they
were extracted, for example
P:"dir3/dir4/patchfile.ext.patch" TYPE MD5
- path for patch file that should be applied
TYPE is one of the supported
- VPATCH (DIFF, BSDIFF are planned)
- .patch extensions is not a requirement, but
merely a convention
- MD5 in this case is MD5 of the new patched file
and not of the patch itself
[D ] ... - MD5 of the file to be deleted