来源:http://trac.seagullproject.org/wiki/Code/SubmittingPatches
对所有想为seagull项目做贡献的开发人员的政策是他们各自保留他们的原始版权,并授权给Demian Turner,也就是Seagull项目的维护者和Seagull 组,无偿使用他们的工作及其在该项目协议下的延伸工作。
所有的代码必须遵守SeagullHeader编码标准,贡献者将会被列在文件版说明底部的作者列表内。
浏览http://pear.php.net/manual/en/contributing.patches.php,关于创建补丁的PEAR向导.
为Seagull创建补丁,首先你必须从SVN上取得最新的代码. 从SVN上取得Seagull
开始你的修改…
然后转到Seagull根目录,即,如果Seagull安装在/var/seagull,通过以下命令转到那个目录下:
$ cd /var/seagull
然后执行:
$ svn diff > your.diff
请将所有的补丁提交到Trac站点上.如果你的补丁匹配到一个已存在的标签,请为他贴上一个标签或相应地创建一个新的标签
提示:我们建立的Trce,对匿名的用户是只读的.添加一个补丁或创建一个标签,你将需要在Seagull站点上签名并使用相同的详细资料进入Trac.
记住:请在Seagull的根目录创建所有补丁.
如果你在根目录下创建补丁,补丁的头文件如下所示:
Index: modules/navigation/classes/CategoryMgr.php =================================================================== RCS file: /var/cvs/seagull/modules/navigation/classes/CategoryMgr.php,v retrieving revision 1.14 diff -u -r1.14 CategoryMgr.php --- modules/navigation/classes/CategoryMgr.php 29 Jan 2005 10:22:28 -0000 1.14 +++ modules/navigation/classes/CategoryMgr.php 2 Feb 2005 12:44:32 -0000 @@ -252,11 +252,11 @@
(补丁的第一行由SGL的根目录取得,与第6,7行一样.如果需要,手动修改它)
你只想递比较目录的差异,你可以使用
$ svn diff modules/publisher > your.diff
同理,只比较一个文件命令:
$ svn diff modules/publisher/lang/german-iso-8859–1.php > your.diff
如果你改变了一些不想区分的文件,这样做是相当容易操作的.
同样,请记住,特别是当你正要提交一个新文件时,Unix EOL是非常重要的,即/n 替代/r/n。如果你是在Windows下工作,而你的编辑器没有将文件保存为Unix EOL选项时,可以简单地运行以下两个命令行中的任意一行,第二行也是将制表符转换成4个空格:
perl -pi -e 's/\r\n?/\n/g' $file
或
tr -d '\15\32' < dos.txt > unix.txt
或使用awk
awk '{ sub("\r$", ""); print }' dos.txt > unix.txt
或使用程序:dos2unix
将制表符替换为四个空格:
tr '\t' ' ' < file > file.new && mv -f file.new file
(有可能不能工作,取决于你的tr版本)
或
sed '/\t/ /g' < file > file.new && mv -f file.new file
(取决于你的sed版本,你可能需要输入实际的制表符来代替命令行中的\t)
如果你想给你正在使用的Seagull版本应用补丁,要么使用phpEclipse中提供的应用补丁功能或简单地在你的Linux控制台中输入如下命令
$ cd your/seagull/root/directory/ $ patch -p0 --dry-run < your_patch_file.txt
(Note: on FreeBSD patch does not recognize --dry-run option. Use -C or --check as it is equivalent.)
测试完后,如果没有输出错误,删除–dry-run.