0

第一次给开源软件提供补丁。

Posted by Elias on 十 16, 2004 in 匪夷所思的平淡生活

开始使用开源软件已经好几年了,一直也没有为使用的这些软件做些什么,今天头一次给一个软件提供了一个补丁,解决了我用来建立个人主页的PmWiki的1.0.11版本附带的phpdiff函数的一个小问题。

发现PmWiki 1.0.11 内置的phpdiff的主要问题在于把空行也列入比较的范围,而我们平时使用PmWiki常常需要使用空行来分隔两自然段,这样就很容易造成phpdiff输出很难阅读的页面历史。我的Patch给出的一个临时的解决办法,是让phpdiff函数不负责比较空行,这样能够让diff函数在大多数情况下正常工作,但仍不能保证diff输出最优结果(要得到最优结果,必须从算法上进行修改,比如phpdiffnm就能得到更好的输出结果,但计算量也大一些)。我已经将这个问题及解决方案提交到PmWiki的PITS错误追踪系统上了,编号00096。 具体来说,就是在PmWiki 1.0.11带的phpdiff.php文件的第50行之后加入以下两行: [pre] if ($t1[$s1]=='' :: $t2[$s2]=='') { $s1++; $s2++; continue; }[/pre]

虽然不知道最后我提交的补丁是否会加入到更新版之中,但毕竟是我第一次给开放源码软件提供补丁,写在这里纪念一下,也鼓励我自己做更多的工作。

后来在11月4日发现PmWiki在更新版本到1.0.12的时候顺便更改了我提到的这个问题,参考了我的思路,但是实现办法比我的方法巧妙很多,毕竟pm先生是很有经验的php开发人员啊。他当时给我的回复如下,也摘过来纪念一下:

[blockquote]Agreed, except that the above patch is a little too aggressive about avoiding matches–i.e., if $t2[$s2] is blank then it doesn't even consider if $t1[$s1] might be a worthwhile (non-blank) match and the shortest distance.

I've implemented the above scheme differently–by simply not including blank lines as valid targets for the shortest-distance search (i.e., don't include them in the reverse-index array in the first place).

Thanks for the excellent analysis and suggestion! –Pm [/blockquote]

Elias的邪异门 is proudly powered by WordPress.(京ICP备10013669号 瑞豪开源提供VPS)Theme design by Laptop Geek.
Copyright © 2018 All rights reserved. Entries (RSS) and Comments (RSS).