xdiff-不同文件版本差异、补丁

	简介:
		1.xdiff扩展使你能够创建和应用,包含文件不同版本之间差异的补丁文件	
		2.此扩展支持两种操作模式-字符串和文件,以及两种不同的补丁格式-统一的文本格式(unified)和二进制(binary)。文本格式补丁是优秀的文本文件,因为它们是人类可读和易于审查。二进制文件,例如:档案(archives-压缩包等)或图片,因为二进制安全以及能处理非打印字符,二进制补丁也是一个很好的选择。
		3.自从1.5.0版本后,生成二进制补丁有2个不同的函数集合。新函数-xdiff_string_rabdiff()和xdiff_file_rabdiff(),生成旧函数的兼容性输出,但是更加快、生成更小的结果。可查看 libxdiff站点(http://www.xmailserver.org/xdiff-lib.html)查看更多细节
		4.该扩展使用 'libxdiff' 实现这些函数。查看(http://www.xmailserver.org/xdiff-lib.html)
	安装:
		1.为了使用xdiff,需要安装 'libxdiff',查看(http://www.xmailserver.org/xdiff-lib.html)。至少需要 libxdiff 0.7版本,并注意 'memory_limit' 配置项
		2.安装 PECL扩展:http://pecl.php.net/package/xdiff
	预定义常量:
		XDIFF_PATCH_NORMAL - 该标识暗示:xdiff_string_patch()和xdiff_file_patch() 函数,应该通过将补丁应用到原始内容,从而生成新版本文件。这是默认的操作模式。
		XDIFF_PATCH_REVERSE - 该标识暗示:xdiff_string_patch()和xdiff_file_patch() 函数,应该反过来通过将新内容修改的补丁还原,生成旧版本文件。
	函数:
		文件模式:
			1.xdiff_file_bdiff(string $old_file, string $new_file, string $dest) - xdiff_file_diff_binary(1.5.0版本后,xdiff_file_bdiff的别名)
				比对2个文件,生成二进制差异,并保存结果到一个补丁文件。该函数对文件文件和二进制文件都有效。生成的补丁文件稍后可用于 xdiff_file_bpatch()或xdiff_string_bpatch()
				参数:	
					$old_file - 旧文件路径
					$new_file - 新文件路径
					$dest - 生成的补丁文件。结果文件包含新旧文件的差异。是二进制格式、非人类可读
				示例:
					<?php
						$old_version = 'test1.tgz';
						$new_version = 'test2.tgz';
						xdiff_file_bdiff($old_version, $new_version, 'test_diff.bdiff');
					?>
				注意:
					2个文件都会加载到内容中,因此,确保你的 'memory_limit' 设置的足够高
			2.xdiff_file_rabdiff(string $old_file, string $new_file, string $dest)
				比对2个文件,生成二进制差异,并保存结果到一个补丁文件。该函数同 'xdiff_file_bdiff()' 函数的不同是使用了不同的算法,该函数执行的更快,并产生更小的补丁文件。 该函数对文件文件和二进制文件都有效。生成的补丁文件稍后可用于 xdiff_file_bpatch()或xdiff_string_bpatch()
				参数:
					$old_file - 旧文件
					$new_file - 新文件
					$dest - 最终生成的补丁文件。结果文件包含新旧文件的差异。是二进制格式、非人类可读

			3.xdiff_file_diff(string $old_file, string $new_file, string $dest[, int $context = 3[, bool $minimal = false]])
				生成一个人类可读的(unified diff)包含新旧文件差异的补丁文件,并存储到 $dest 指定的目标文件。结果文件是人类可读的。一个可选的 $context 参数,指定了应该被添加到补丁文件中的差异的行数。设置$minimal参数为true,将尽可能压缩输出的补丁文件(花费很长时间)
				参数:
					$old_file - 旧文件
					$new_file - 新文件
					$dest - 生成的补丁文件
					$context - 指明在diff补丁文件中,想要包含的行数
					$minimal - 如果你想最小化补丁文件的尺寸,设置该参数为true,花费较长时间(压缩)
				示例:
					<?php
						$old_version = 'test1.php';
						$new_version = 'test2.php';
						xdiff_file_diff($old_version, $new_version, 'test_diff.diff', 2);
					?>
				注意:
					该函数在二进制文件中,工作的不好。对比二进制文件,使用 xdiff_file_bdiff()或xdiff_file_rabdiff() 函数

			4.xdiff_file_bdiff_size(string $file)
				返回将$file指定的二进制补丁文件应用到原始文件后,新创建的结果文件的尺寸。
				参数:
					$file - 由 xdiff_string_bdiff()或xdiff_string_rabdiff() 函数创建的二进制补丁文件路径
				示例:
					<?php
						$size = xdiff_string_bdiff_size('file.bdiff');
						echo "结果文件文件大小为:$size bytes";
					?>

			5.xdiff_file_bpatch(string $file, string $patch, string $dest) - xdiff_file_patch_binary(1.5.0版本后,xdiff_file_bpatch的别名)
				使用一个二进制补丁,给原始文件打补丁,并将结果保存到 $dest 制定的目标文件。函数可接收 xdiff_file_bdiff()和xdiff_file_rabdiff()函数创建的补丁文件,或者同它们相当的字符串文件!
				参数:
					$file - 原始文件
					$patch - 二进制补丁文件
					$dest - 最终生成的结果文件
				示例:
					<?php
						$old_version = 'test1.tgz';
						$patch = 'test_diff.bpatch';
						$result = xdiff_file_bpatch($old_version, $patch, 'test2.tgz')
						if($result){
							echo '文件打补丁成功';
						}else{
							echo '文件打补丁失败';
						}
					?>

			6.xdiff_file_patch(string $file, string $patch, string $dest[, int $flags = DIFF_PATCH_NORMAL])
				使用一个补丁文件,给旧文件打补丁,或是将新文件还原回旧文件,将结果文件保存在 $dest 指定的目标文件
				参数:
					$file - 原始文件
					$patch - 人类可读的补丁文件。只能通过 xdiff_string_diff()或xdiff_file_diff() 函数创建,或兼容性工具
					$dest - 最终生成的结果文件
					$flags - 2个预定义常量(不同的操作模式,是打补丁,或是还原)

			7.xdiff_file_merge3(string $old_file, string $new_file1, string $new_file2, string $dest)
				合并3个文件为一个文件,并保存结果到 $dest 指定的目标文件。$old_file旧文件是原始版本,而 $new_file1和$new_file2都是原始版本的修正版本。
				参数:
					$old_file - 旧文件
					$new_file1 - 旧文件的修正版1
					$new_file2 - 旧文件的修正版2
					$dest - 最终生成的结果文件,合并了2个修正版本的差异
				示例:
					<?php
						$old_version = 'original.php';
						$fix1 = 'fix1.php';
						$fix2 = 'fix2.php';
						$errors = xdiff_file_merge3($old_version, $fix1, $fix2, 'fixed.php');
						if(is_string($errors)){
							echo "拒绝:\n";
							echo $errors;
						}
					?>

		字符串模式:
			同 '文件模式' 大同小异,不过是没有 '$dest' 目标文件,而是直接返回字符串,我们可选择性的 '保存结果字符串'!
	参考:
		http://qa.helplib.com/279884
		https://github.com/eaglewu/phpdiff/blob/master/phpdiff.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值