这是命令 makepatchp 可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
makepatch - 创建脚本以更新源树
概要
补丁 [ 选项 ] 旧源代码 新源
介绍
传统上,源树更新为 补丁 程序,处理补丁
产生的信息 差异 程序。 虽然 差异 和 补丁 做得很好
修补文件内容的工作,大多数版本不处理创建和删除文件和
目录,以及调整文件模式和时间戳。 较新的版本 差异 和 补丁
似乎能够创建文件,以及非常新版本的 补丁 可以删除文件。 但
就是这样。
另一个典型的问题是补丁包通常是从互联网上下载的,或者
通过电子邮件传输。 通常需要验证一个的正确性
在尝试应用补丁包之前。
- 补丁 包旨在克服这些限制。
商品描述
- 补丁 包包含两个 Perl 程序: 补丁 和 应用补丁.
补丁 将从两个源树生成补丁包。 它遍历源
目录并运行一个 差异 在每对对应的文件上,累积输出
成补丁包。 它知道补丁包的约定:如果一个名为
“patchlevel.h”存在,先处理,所以 补丁 可以查看源码的版本
树。 此外,为了处理非完美版本 补丁 正在使用中,它提供
""Index:"" 和 ""Prereq:"" 行,所以 补丁 可以正确定位要打补丁的文件,并且
将补丁重新定位到当前目录以避免创建新文件时出现问题。
文件列表可以在所谓的 表现 文件,但它也可以是
通过递归遍历源树生成。 可以使用 shell 排除文件
样式通配符和 Perl 正则表达式模式。
但事实并非如此! 补丁 还在补丁包中插入了一些附加信息
供...使用 应用补丁 程序。
需要强调的是,生成的补丁包仍然是有效的输入 补丁.
当与 补丁, 没有验证,新文件时可能会出现问题
需要创建。 补丁 在补丁包前面添加一个小的 shell 脚本
为补丁过程创建必要的文件和目录。 如果你不能跑
应用补丁 出于某种原因,您可以运行补丁包 as a 壳 脚本 准备
修补过程的源目录。
- 应用补丁 程序将执行以下操作:
· 它将广泛验证补丁包是否完整并且在使用过程中没有损坏
转让。
· 它将应用一些启发式方法来验证补丁所在的目录
应用确实包含预期的来源。
· 根据需要创建文件和目录。
· 它通过运行 补丁 程序。
· 完成后,删除过时的文件、目录和“.orig”文件,文件模式
设置新文件的数量,并调整所有修补文件的时间戳。
需要注意的是 应用补丁 只需要 补丁 程序。 它不依赖于外壳或外壳
工具。 这使得在非 Unix 系统上应用补丁成为可能。
一般用途总体评估 用法
假设您有一个存档“pkg-1.6.tar.gz”,其中包含包“pkg”的源代码
1.6 版,以及包含 1.7 版源代码的目录树“pkg-1.7”。 这
以下命令将生成一个补丁包,将 1.6 源更新为 1.7
版本:
makepatch pkg-1.6.tar.gz pkg-1.7 > pkg-1.6-1.7.patch
要应用此脚本,请转到包含 1.6 源代码的目录并提供脚本
至 应用补丁:
cd 旧/pkg-1.6
应用补丁 pkg-1.6-1.7.patch
应用补丁 将验证它是否在正确的位置执行并进行所有必要的操作
更新。
默认情况下, 补丁 将提供几行进度信息,例如:
将 pkg-1.6.tar.gz 解压到 /tmp/mp21575.d/old...
pkg-1.6 的清单 MANIFEST 包含 1083 个文件。
pkg-1.7 的清单 MANIFEST 包含 1292 个文件。
正在处理文件列表...
收集补丁...
266 文件需要打补丁。
需要创建216个文件和8个目录。
需要删除 7 个文件。
应用补丁 默认不提供反馈信息。
补给 参数
补丁 需要两个参数: 旧源码 和 新源.
旧源代码
这是单个文件或包含副本的目录的名称
目标文件的旧版本; 换句话说,文件的副本 先 去任何
修改。
或者,它可能是保存要处理的文件的档案的名称。
允许的存档格式是 gzipped tar(名称以 "".tar.gz"" 或 "".tgz"" 结尾),
bzipped tar(名称以“".tar.bz2"" 结尾)、普通 tar(名称以“".tar"" 结尾)和 zip
(名称以“.zip”结尾)。
新源
这是单个文件或包含副本的目录的名称
目标文件的较新版本; 换句话说,文件的副本 after 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。
进行了修改。
或者,它可能是保存要处理的文件的档案的名称。
生成的补丁脚本 补丁 将负责创建新文件和
目录,更新现有文件,并删除不再存在的文件和目录
出现在 新源 目录。
表现 档
清单文件的目的是提供构成包的文件列表。
清单文件传统上称为“MANIFEST”并驻留在顶级目录中
的包。
虽然清单文件的内容没有正式的标准, 补丁 使用
以下规则:
· 如果清单文件的第二行看起来像一个分隔行(例如它是
空,或只包含破折号),它会被丢弃,第一行也是如此。
· 空行和以“#”开头的行将被忽略。
· 如果一行中有多个以空格分隔的“单词”,则考虑第一个单词
成为文件名。
默认 治疗
默认情况下, 补丁 在顶级目录中查找名为“MANIFEST”的文件
旧的和新的源树。 如果找到这些文件(或其中之一),它们是
用过的。 如果找不到清单文件,则假定该包包含所有文件
在目录中。
可以使用命令行选项修改默认清单文件的默认名称
""-automanifest"",请参见“命令行选项”部分。
明确地 命名 of 舱单 档
命令行选项 ""-oldmanifest"" 和 ""-newmanifest"" 可用于显式地
指定旧的和新的清单文件。 选项 ""-manifest"" 是设置一个的简短方法
新旧源代码树的清单文件。
压制 舱单 文件 加工
命令行选项 ""-nomanifest"" 可用于禁止所有清单文件处理。
假定包包含源目录中的所有文件。
补给 选项
补丁 需要几个选项来控制它的行为。 选项通常指定在
命令行,但是 补丁 可以从以下三个来源中选择
订购:
· 环境变量 补丁初始化.
当这个环境变量被设置时,它的内容被认为是命令行
启动时处理的选项。 允许所有正常选项,加上一个:
-rc文件 文件名. 选项 -rc文件 可用于指定备用选项文件,请参阅
联络一位教师
· 选项文件。
补丁 首先尝试处理名为的文件 /etc/makepatchrc. (这是一种 Unix 主义。)
如果缺少这个文件也没关系。
接下来, 补丁 将处理一个名为 .makepatchrc 在用户的主目录中,
如果它存在。
处理完这个文件后, 补丁 将处理一个名为 .makepatchrc ,在
当前目录(如果存在)。 可以指定此文件的替代名称
带选项 -rc文件 在环境变量中 补丁初始化。 这是唯一的方法
指定替代选项文件名。
在所有选项文件中,空行和以“;”开头的行或“#”被忽略。 全部
其他行被认为包含选项,就好像它们是在
命令行。
· 命令行。
命令 线 选项
选项不区分大小写匹配,并且可以缩写为唯一性。
-描述 文本
提供此补丁的描述性文本。 多种的 -描述 选项可能是
提供。
如果没有提供描述,程序会尝试猜测一个。 这通常是可能的
如果两个目录都是简单的名称,例如'"pkg-1.16"'。 如果没有描述可以
确定后,程序会要求一个。
-差异 CMD
如果指定, CMD 是用于生成差异的命令
两个版本的文件。 如果未指定,此命令默认为 ""diff -c""。
为获得最佳结果,请仅使用 ""diff -c"" 或 ""diff -u""。 无论如何,它 必须 生产
上下文或统一差异输出。
-补丁级别 文件
如果指定, 文件 表示将用于代替的备用文件
"补丁级别.h".
-自动清单 文件
补丁 将自动使用给定名称的清单文件,如果它们出现在
目录。 默认名称为“表现".
-nomanifest
禁止使用清单文件。
-显现 文件
如果指定, 文件 表示由列表组成的清单文件的名称
包含在两个文件中的文件 旧 和 新 目录。
-旧清单 文件
如果指定, 文件 表示由列表组成的清单文件的名称
中包含的文件 旧 目录。 此选项旨在用于
与 -新清单 选项。 请注意, 旧 和 新 目录必须
仍然被指出。
-新清单 纳米文件
如果指定, 纳米文件 表示由列表组成的清单文件的名称
中包含的文件 新 目录。 此选项旨在用于
与 -旧清单 选项。 请注意, 旧 和 新 目录必须
仍然被指出。
-[没有]递归
补丁 默认通过目录递归。 选项 -norecurse 防止
超出初始目录的递归。
-[没有]遵循
如果设置,指向目录的符号链接将被遍历,就好像它们是真正的目录一样。
-信息命令 命令
如果指定,则运行的输出 命令 将在每个补丁块之前添加。
命令 将首先进行以下替换:%oP 将被替换为
旧文件的名称,%nP 将替换为新文件的名称。 “%%“ 将会
替换为单个“%”; 其他“%”序列可能会在未来版本中添加。 当一个
正在创建新文件,新文件的名称将同时提供给 %oP 和
%nP。
请注意,%oP 和 %nP 是在“%”序列之后建模的 发现 -printf.
-排除 模式
如果指定,则匹配 shell 模式的文件 模式 将被排除在外。 仅有的
处理通配符“*”和“?”以及字符类“[...]”。 多种的
-排除 可以提供选项。
-排除正则表达式 模式
如果指定,匹配 Perl 正则表达式模式的文件和目录
模式 将被排除在外。 多种的 -排除正则表达式 可以提供选项。
-[没有]排除标准
默认设置。 如果设置,则忽略一组通用的文件和目录。
另请参阅“标准排除模式”部分。
-[没有]排除-cvs
如果设置,通常是版本控制系统 CVS 一部分的文件和目录是
排除在外。
此外,“.cvsignore”文件就像 CVS 一样受到尊重。
另请参阅“标准排除模式”部分。
-[没有]排除-rcs
如果设置,通常是版本控制系统 RCS 一部分的文件和目录是
排除在外。
另请参阅“标准排除模式”部分。
-[没有]排除-sccs
如果设置,通常是版本控制系统 SCCS 一部分的文件和目录是
排除在外。
另请参阅“标准排除模式”部分。
-[没有]排除-vc
(重新)设置的简称 -排除-rcs, -排除-cvs及 -排除-sccs.
-[没有]忽略 cvs 关键字
忽略 CVS 关键字数据(例如“Id”、“Header”、“Revision”)中的差异,
前提是同一个大块没有其他差异。 这个选项通过一个非常
毛茸茸的正则表达式 --忽略匹配行 的选项 差异 程序,因此
需要 GNU 差异. 此限制可能会在未来版本中取消。
-[没有]忽略 rcs 关键字
与...一样 -[没有]忽略 cvs 关键字.
-提炼 模式=命令
为档案定义额外的提取规则。 如果源名称或
目标匹配 Perl 模式, 命令 与存档一起执行
标准输入和当前目录设置为文件必须在的位置
提取。 多种的 -提炼 可以提供选项。 用户定义的规则覆盖
内置规则。
内置规则是:
.+\.(tar\.gz|tgz) => "gzip -d | tar xpf -"
.+\.(tar\.bz2) => "bzip2 -d | tar xpf -"
.+\.tar => "tar xf -"
.+\.zip => "解压-"
模式隐式地锚定到文件名的开头和结尾。
-[没有]IDENT
如果设置,则报告程序名称和版本。
-[没有]详细
这是默认设置,使 补丁 显示有关其活动的信息
至 斯特德.
-[没有]安静
相反的 -冗长. 如果设置,这将指示 补丁 抑制显示
活动信息。
-[没有]帮助
如果设置,这将导致显示一个简短的帮助消息,之后程序
立即退出。
标准版 排除 模式
始终排除以下文件模式:
*~ *.a *.bak *.BAK *.elc *.exe *.gz *.ln *.o *.obj
*.olb *.old *.orig *.rej *.so *.Z
.del-* .make.state .nse_depinfo 核心
标签 TAGS
附加选项 -排除-sccs 补充说:
p.* s.* SCCS
附加选项 -排除-rcs 补充说:
,* *,v RCS RCSLOG
附加选项 -排除-cvs 添加“.cvsignore”模式,并且:
.#* #* _$* *$ CVS CVS.adm cvslog.*
如果我错过了一些,请告诉我。
环境 变量
补丁初始化
当这个环境变量被设置时,它的内容被认为是命令行
启动时处理的选项。 允许所有正常选项,加上一个:
-rc文件 文件名。 如果 -rc文件 被指定,文件被读取并且它的所有行都是
被认为包含“Makepatch 选项”部分中描述的选项设置。
TMPDIR
“TMPDIR”可用于指定放置临时文件的区域。 它
默认为“/ tmp目录".
TEMP
“TEMP”可用作“TMPDIR”的替代。
例子
假设您有一个目录树“pkg-1.6”,其中包含包“pkg”的源代码
1.6 版,以及包含 1.7 版源代码的目录树“pkg-1.7”。 这
以下命令将生成一个补丁包,将 1.6 源更新为 1.7
版本:
makepatch pkg-1.6 pkg-1.7 > pkg-1.6-1.7.patch
要应用此脚本,请转到 pkg-1.6 目录并将脚本提供给 应用补丁:
cd 旧/pkg-1.6
应用补丁 pkg-1.6-1.7.patch
应用补丁 将验证它是否在正确的位置执行并进行所有必要的操作
更新。
这是生成和使用清单文件的一种方法:
(cd pkg-1.6; find .-type f -print > OLDMANIFEST)
(cd pkg-1.7; find .-type f -print > NEWMANIFEST)
补丁\
-oldmanifest pkg-1.6/OLDMANIFEST \
-新清单 pkg-1.7/新清单 \
pkg-1.6 pkg-1.7 > pkg-1.6-1.7.diff
错误 和 限制
大部分工作 补丁 正在处理文件名。 补丁 经过测试
在 Unix 系统上广泛使用,但不能保证在其他系统上工作。
应用补丁 反复报告正确处理 补丁 生成的补丁包
现代 32 位 Windows 系统也是如此。
补丁 不知道符号链接。 这些将被视为普通文件。
如果使用或生成的文件列表使用不同的文件列表,则可能会生成错误的结果
路径分隔符。
使用 onworks.net 服务在线使用 makepatchp