java里patch什么意思,patch是什么意思

Patch主要用于文件的更新和修复,常作为电脑程序的补丁。它读取差异列表,根据指示修改文件内容。补丁文件可以包含多个补丁,每个补丁包含文件名和差异信息。patch命令会尝试应用补丁,处理不匹配的块并创建拒绝文件记录未成功应用的部分。模糊因子允许一定程度的行匹配误差,确保补丁的兼容性。
摘要由CSDN通过智能技术生成

大家知道patch是什么意思吗?随着时代的发展,越来越多的的新词汇出现在我们的生活中,下面就和康网小编一起来了解一下patch是什么意思吧。

patch是什么意思:

Patch多指补丁的意思比如内存补丁、文件补丁等, 也是电脑命令程序的一种。

用途

对文件应用更改。

描述

patch 命令读取如何更改文件的源文件指示信息,然后应用这些更改。源文件包含由 diff 命令产生的差别列表(或者 diff 列表)。差异列表是比较两个文件和构建关于如何纠正差别的指示信息的结果。缺省情况下,patch 命令使用从标准输入读入的源文件,但是使用 -i 标志和 PatchFile 变量可以覆盖此设置。

差异列表有三种格式:正常、上下文或者是 ed 编辑器风格。patch 命令确定差异列表格式,除非被 -c、-e 或 -n 标志否决。

缺省情况下,文件的打过补丁的版本替换原始版本。指定 -b 标志时,每个补丁文件的原文件保存在同名的文件中,只是在文件名后附加了后缀 .orig。使用 -o 标志也可以指定输出的目的地。

-p 标志使得无需手工编辑补丁文件就可以定制补丁文件到本地用户目录结构中。通过指定从路径全称除去多少部分可以做到这一点。例如,如果补丁文件包含路径名称 /curds/whey/src/blurfl/blurfl.c,那么:

* -p 0 导致使用完整路径名。

* -p 1 除去前导斜杠,留下 curds/whey/src/blurfl/blurfl.c。

* -p 4 除去前导斜杠和前三个目录,留下 blurfl/.c。

不指定 -p 标志使得 patch 命令使用基本名称。在上面的示例中,此文件为 blurfl.c。

补丁文件格式

补丁文件必须包含单行或多行头信息,后跟单个或多个补丁。每个补丁必须包含一行或多行文件名标识,其格式由 diff -c 命令和单个或多个 diff 命令输出集产生,通常称为 hunks。

patch 命令跳过补丁文件中的任何前导文本,然后应用实际的差异列表,并且跳过任何后续文本。因而,可以将包含差异列表的文件或消息当成补丁文件使用,此时 patch 命令仍然有效。在这种情况下,如果整个差异列表使用一致的数量缩进,patch 命令也会调整其间距。

要更改原始文件中的行范围,每一补丁中的块(hunk)必须为单独的差异列表。补丁内连续块(hunk)的行号必须以升序方式出现。

文件名

如果没有指定 File 参数,要获得供编辑的文件名,patch 命令会执行下面的步骤:

1. 在上下文差异列表的头部分,文件名由以 ***(三个星号)或者 ---(三个破折号)开头的行确定。以 *** 开头的行表示获取补丁的文件,然而以 --- 开头的行表示应该应用补丁的文件名。选择存在文件的最短名称。

2. 如果在前导文本中有 Index: 行,patch 命令尝试使用来自于那一行中的文件名。

3. 上下文差异文件头优先于 Index: 行。

4. 如果从前导文本中不能确定文件名,patch 命令提示输入需要打补丁的文件名。

5. 如果不能找到原始文件,但是有适合的 SCCS 或 RCS 文件可用,patch 命令尝试获取或检出文件。

6. 如果前导文本包含 Prereq: 行,patch 命令从先决条件行中获取第一个词(通常是版本号)并且检查输入文件看是否能找到那个词。如果找不到,patch 命令在继续运行前会提示确认。

扩展阅读:应用程序中的patch

如果补丁文件包含不止一个补丁,patch 命令尝试应用每个差异列表,就好像它来自于单独的补丁文件。在这种情况下,为每个差异列表确定需要打补丁的文件名,并且审查每个差异列表前的头文本以获得如文件名和修订版级别的信息。

如果指定 -c、 -e 或 -n 标志,patch 命令将每块(hunk)内的信息分别解释成上下文差别、ed 编辑器差别或者正常差别。否则,patch 命令确定基于块(hunk)内信息格式的差别类型。

patch 命令通过获取块(hunk)的首行序号和添加或减去由于应用前一块(hunk)而产生的任何行偏移来搜索位置以应用每一块(hunk)。如果在这一行位置不可能有精确匹配,patch 命令前后搜索以获取与块(hunk)的内容精确匹配的行集合。

如果找不到这些位置,且如果 patch 命令正在应用上下文差异列表,patch 命令能进行非精确搜索。fuzz factor 指定了非精确匹配的行数目。如果模糊因子设置成 1 或者更大,patch 命令执行第二次扫描,这一次忽略上下文的第一行和最后一行。如果没有匹配结果,且最大模糊因子设置成 2 或者更大, patch 命令执行第三次扫描,这一次会忽略上下文的前两行和最后两行。(缺省模糊因子最大值为 2)。如果找不到匹配的位置,patch 命令在拒绝文件中放置块(hunk)。创建拒绝文件时,其名称和输出文件一样,只是在文件名有后缀 .rej。使用 -r 标志可以覆盖此命名约定。

以上下文差异列表格式写拒绝块(hunk),而不管补丁文件的格式如何。如果输入是正常差别或 ed 编辑器样式差别,拒绝文件可能包含上下文格式零行差别。拒绝文件中块(hunk)的行编号可能与补丁文件中的行编号不同。这是因为拒绝文件的行编号反映了新文件而不是老文件中故障块(hunk)的大约位置。

当完成每块(hunk)后,patch 命令会告诉您该块(hunk)是成功还是失败。也可以获知为每块(hunk)假定的新行编号。如果这与差异列表中指定的行编号不同,就会报告偏移量。patch 命令也说明是否使用模糊因子来进行匹配。

注:单一的大偏移可能表示块(hunk)安装位置不正确。模糊因子的使用可能表示布局不正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值