在Debian系统中,源代码合并工具是维护软件包的重要组成部分。它们允许开发者将上游的更改与本地的修改进行整合,确保软件包既能反映最新的项目进展,又能适应特定发行版的需求。本教程主要汇总了各种源代码合并工具和相关操作步骤。
一、源代码合并工具
源代码合并工具列表:
软件包 | 流行度 | 大小 | 命令 | 说明 |
patch | V:98, I:701 | 248 | patch(1) | 给原文件打补丁 |
vim | V:88, I:372 | 3743 | vimdiff(1) | 在 vim 中并排比较两个文件 |
imediff | V:0, I:0 | 169 | imediff(1) | 全屏交互式两路/三路合并工具 |
meld | V:8, I:31 | 3500 | meld(1) | 比较和移植文件(GTK) |
wiggle | V:0, I:0 | 176 | wiggle(1) | 应用被拒绝的补丁 |
diffutils | V:864, I:996 | 1735 | diff(1) | 逐行比较两个文件 |
diffutils | V:864, I:996 | 1735 | diff3(1) | 逐行比较和合并三个文件 |
quilt | V:2, I:23 | 871 | quilt(1) | 管理系列补丁 |
wdiff | V:7, I:52 | 648 | wdiff(1) | 在文本文件中,显示单词的不同 |
diffstat | V:13, I:120 | 74 | diffstat(1) | 通过 diff 生成一个改变柱状图 |
patchutils | V:15, I:118 | 232 | combinediff(1) | 从两个增量补丁创建一个积累补丁 |
patchutils | V:15, I:118 | 232 | dehtmldiff(1) | 从一个 HTML 页面提取出一个 diff |
patchutils | V:15, I:118 | 232 | filterdiff(1) | 从一个 diff 文件里面提取或者排除 diff 文件 |
patchutils | V:15, I:118 | 232 | fixcvsdiff(1) | 修复由 CVS patch(1) 错误创建的 diff 文件 |
patchutils | V:15, I:118 | 232 | flipdiff(1) | 交换两个补丁的顺序 |
patchutils | V:15, I:118 | 232 | grepdiff(1) | 显示哪些文件是由匹配正则表达式的补丁修改 |
patchutils | V:15, I:118 | 232 | interdiff(1) | 显示在两个统一格式 diff 文件(基于同一个文件的两个不同 diff 文件)之间的差异 |
patchutils | V:15, I:118 | 232 | lsdiff(1) | 显示哪些文件由补丁修改 |
patchutils | V:15, I:118 | 232 | recountdiff(1) | 重新计算通用内容 diff 文件的数量和偏移 |
patchutils | V:15, I:118 | 232 | rediff(1) | 修复手工编辑 diff 文件的数量和偏移 |
patchutils | V:15, I:118 | 232 | splitdiff(1) | 隔离出增量补丁 |
patchutils | V:15, I:118 | 232 | unwrapdiff(1) | 识别已经被分词的补丁 |
dirdiff | V:0, I:2 | 167 | dirdiff(1) | 显示目录树之间的不同并移植改变 |
docdiff | V:0, I:0 | 553 | docdiff(1) | 逐词逐字地比较两个文件 |
makepatch | V:0, I:0 | 100 | makepatch(1) | 生成扩展补丁文件 |
makepatch | V:0, I:0 | 100 | applypatch(1) | 应用扩展补丁文件 |
二、源代码文件导出差异
下面的操作,导出两个源文件的不同,并根据文件的位置,创建通用 diff 文件”file.patch0″ 或 “file.patch1”.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
三、源代码文件移植更新
diff 文件(通常被叫作 patch 补丁文件),用于发送一个程序更新。通过下面的方式,接收到的部分,应用这个更新到其它文件。
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
四、交互式移植
如果一个源代码,有两个版本,可以通过下面的方式,使用 imediff(1) 执行两方交互式移植。
$ imediff -o file.merged file.old file.new
如果一个源代码,有三个版本,可以通过下面的方式,使用 imediff(1) 执行交互式三方移植。
$ imediff -o file.merged file.yours file.base file.theirs