Drupal中的patch

djf 发布于 2012/02/01 15:06
阅读 887
收藏 0

Patch,英文意思是补丁,它并不是drupal的产物,它是一个linux的命令,说起它,不得不提linux的另一个命令:diff.在数学 领域,diff是用来对2个集合求差的,patch是求合,在linux命令中,diff用来比较二个文件的不同地方,比如你是一个项目管理者,你让手下 给你修改一下模块,修改好交给你后,你想看看他改了什么地方,就可以用diff命令,格式为:diff [命令行选项] 原始文件 新文件

例如

[hahalee@builder]$ diff -u a.module b.module

diff的常用参数如下:

-r 递归处理目录 -u 输出统一格式(unified format)   -N patch里包含新文件 -a   patch里可以包含二进制文件

如果你把生成的内容输出到一个文件里,比如

[hahalee@builder]$ diff -u example.module example_new.module > example.patch

你就会得到一个新的文件example.patch, 这个文件就是传说中的patch.

它非常有用,举个例子,比如有个模块,同一个文件,你和你的partner同时在修改,完成后,可能要合并代码,怎么合并?之前的做法是一行行比 较,然后手动修改,这种情况如果面对的是成千上万行的代码,还不把人累死。那么标准的做法就是先用diff命令生成patch文件,然后用patch命令 完成二个文件的合并。格式如下:patch [命令行选项] [待patch的文件[patch]].

比如

$patch -p1 < ../example.patch

-p后面的1就是告诉patch,当看到patch文件中的workdir/example时,忽略第一级目录workdir,而将example 作为patch操作的目标文件。当你有多级目录的时候,就可以根据所处目录的层级,任意调整-p后的数字,完成对目标文件的patch操作了。

在linux中,diff,patch一般是带的,但是在windows中,得需要你安装了。

如果你喜欢命令行工具,可以安装GnuWin32 , Unxutils,或者 Cygwin.

如果你喜欢图形化的,可以用TortoiseSVN 或者 Eclipse.

加载中
返回顶部
顶部