一月 14
事情是这样的,在上一篇文章里面,我需要把我对k2的相关文件修改给贴出来。要达到这个目的,最简单的方法当然是用diff来做了。
可是比较郁闷的是,用diff生成的patch文件居然把整个sidebar.php文件的内容全都录入进去了,我这么懒惰的人,应该不会把整个sidebar.php文件都修改掉的,这到底是怎么回事呢?
打开diff生成的patch文件,翻到最后看了一下,发现修改后的文件每一行的最后都有一个"^M"的换行符,想了半天,终于想明白了:为了避免手工把sidebar.php转换gb2312的编码到utf-8,我修改sidebar.php都是通过wordpress的主题编辑器来完成的,这些"^M"应该就是这样生成的换行符。这些东西对于php解释起来说毫无作用,可是却让diff以为我做了一项伟大的工程:把这个sidebar.php文件从头到尾都修改了一遍!
问题找到了,就很好处理了:
- 照旧把修改后的sidebar.php放到/tmp/new目录下,原有的sidebar.php放到/tmp/old目录下。
- 用vim打开/tmp/new/sidebar.php,在命令模式下输入
- :set notextmode
- 生成patch文件
- diff -uNr /tmp/old/sidebar.php /tmp/new/sidebar.php > /tmp/k2.sidebar.php.patch
附录:几种去除^M的方法
1、 cat filename1 | tr -d "\r" > newfile
2、 sed -e "s/^V^M//" filename > outputfilename
3、vi: 用vi打开文件
1. 按ESC键
2. 输入 :%s/^M//g
确定 ^M是使用 "CTRL-V CTRL-M" 而不是字面上的 ^M。这个正则式将替换所有回车符前的 ^M为空($是为了保证^M出现在行尾)
4、一些linux版本有 dos2unix 程序,可以用来祛除^M
5、用vim
输入 :set notextmode
五月 20th, 2008 at 2:43 pm
thank you :)