$contents = $svnrep->dirContents($path, $rev);
过来的,dirContents是include/svnlook.php中SVNRespository的一个成员函数,跟踪进去,里面有干活的一句:
$output = runCommand($config->svn." list ".$this->repConfig->svnParams().quote($path)."@$rev", true);
再次祭出echo大法,奇怪奇怪,这个命令的执行结果居然为空!不应该啊,把命令行拷贝出来在server的term里执行,果然出错:
$ svn --non-interactive --config-dir /tmp list 'file:///xxxxxxx/'@59
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///xxxxx/@59'
svn: Berkeley DB error while opening environment for filesystem /var/svnroot/cprfs/db:
Permission denied
命令行应该是对的,我还特意在本地执行了一次,正常。怪哉怪哉,随手svn help list了一下,没想到看到:
# server
$ svn help list
list (ls): List directory entries in the repository.
usage: list [TARGET...]
# local
$ svn help list
list (ls): List directory entries in the repository.
usage: list [TARGET[@REV]...]
问题原来在这里!服务器上的svn版本太旧,list命令不支持@REV的格式!回到svnlook.php中,将上面列出的语句改为:
$output = runCommand($config->svn." list ".$this->repConfig->svnParams().quote($path)." -r $rev", true);
测试通过!
好了,将svnlook.php中所有的@$rev的都给替换成-r $rev,websvn-2.0就跑起来了,界面漂亮了不少。
没有评论:
发表评论