A.3. 如何用Subversion进行倒退测试

一个经常发生的问题是‘它从前可以工作,但现在不行了’。 此处将提供一步步的过程以帮助定位问题何时产生。这 是为普通用户而设。

首先,你需要从Subversion处获得MPlayer的代码树。 此页面 底部你将会发现相应指示。

在客户端,你现在将在mplayer/目录下得到一份Subversion的镜像。 现在把此镜像更新到你所想要的日期:

cd mplayer/
svn update -r {"2004-08-23"}

日期格式是YYYY-MM-DD HH:MM:SS。 用此日期格式你将根据补丁提交的日期将其提取出来,如 MPlayer-cvslog archive. 所示

现在继续对于普通更新所需步骤:

./configure
make

如果有非程序员阅读至此,找到问题发生处的最快方法是使用二分法查找—, 即循环不断地将搜索间隔日期除二。 例如,如果问题发生在2003年,从这一年的中间查起,然后自问"问题已经在这里了 么?" 如果回答肯定,回溯到四月一号;如不在,前进到十月一号,以此类推。

如果你有很多空余的硬盘空间(完全编译现在将占用100MB,如果调试标志被指定, 大概占用300-350MB),在更新前复制一份最近的正常版本;如果你要返回,这将 节约一些时间。 (在重新编译一份较早版本前经常需要执行'make distclean',所以如果你没有 备份你原始的代码树,当你回到当前代码时,你将不得不重新编译其中的所有代 码。)

当你发现问题发生的那日期,使用mplayer-cvslog压缩文档(按日期排序)继续查找, 并且用更精确的包含小时,分钟,秒的查询。

svn update -r {"2004-08-23 15:17:25"}

这将使你很容易的发现是哪个补丁引起的问题。

如果你发现了引起问题的补丁,你几乎成功了;把它报告到: MPlayer Bugzilla或者 注册到 MPlayer-users 并且把错误发送到那里。 有可能原始作者站出来提交一个修正。 你也可以仔细阅读补丁直到发现错误产生的地方:-)。