0. 安装apache2.x+mysql5.x+php5.2.5+svn1.5.4 其中,php还需要安装VersionControl_SVN-0.3.1.tgz.tar
1. 将svnmanager工具解压到我的apache发布目录下/usr/local/www/apache22/data
如果你在发布目录下增加一个子目录即svnmanager,则在url访问时必带上即
http://192.168.0.1/svnmanager/index.php
2. 配置,在svnmanager的根目录下找到config.php.linux(这是针对linux)改名为config.php且修改以下信息:
$htpassword_cmd = "htpasswda工具的路径";
$svn_cmd = "svn工具路径";
$svnadmin_cmd = "svnadmin工具路径";
//Subversion locations
$svn_repos_loc = "仓库的父目录";
$svn_passwd_file = "账号文件";
$svn_access_file = "权限文件";
$admin_name = "svnmanager页面登陆账号";
$admin_temp_password = "svnmanager页面登陆账号的密码";
3. 问题
(1) 用admin登陆,只看到用户管理跟退出,奇怪,其它功能?
后面才发现,原来后台设置的账号是临时账号,你必须自己创建一个管理员的账号,重新登陆.
(2)操作:Repository administration->User/Gropu Privileges->任意一个select
错误信息:
[2] UserPrivilegesEditPage::require_once(VersionControl/SVN.php) [userprivilegeseditpage.require-once]:
failed to open stream: No such file or directory (@line 201 in file C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\svnmanager\RepositoryModule\UserPrivilegesEditPage.php).
Debug Backtrace
#1 UserPrivilegesEditPage.php:201 -- pradoErrorHandler(...)
#2 UserPrivilegesEditPage.php:201 -- UserPrivilegesEditPage::onLoad()
#3 TControl.php:419 -- UserPrivilegesEditPage->onLoad(...)
#4 TPage.php:1079 -- TControl->onLoadRecursive(...)
#5 TPage.php:955 -- TPage->onLoadRecursive(...)
#6 TApplication.php:483 -- TPage->execute()
#7 index.php:5 -- TApplication->run()
解决:
a. 查找查UserPrivilegesEditPage.php中的require_once("VersionControl/SVN.php"),确认下位置
b. 到相关pear下查找SVN.php文件的位置,本人自己找到是以下两个位置
/usr/ports/devel/pear-VersionControl_SVN/work/VersionControl_SVN-0.3.1
/usr/local/share/pear/VersionControl_SVN
c. 经过自己分析,将require_once("VersionControl/SVN.php")改为require_once("VersionControl_SVN/SVN.php")
d. 测试通过.
ps: 本人分析出一个规律是,这里的路径是pear的相对路径.所以这里解决方法只作参考不是所有人都受用,请根据实际情况调整.
同时,解决了用户管理,别忘组的管理也要调整即GroupPrivilegesEditPage.php 文件.
(3)解决中文乱码问题~参考别人,未实验
修改 svnmanager\global\header.tpl 将页面的字符集设置为 gbk 或者 gb2312
因为这里使用的是 mysql 数据库,因此修改
svnmanager\prado-2.0.3\framework\Data\adodb\drivers\adodb-mysql.inc.php
在 function _connect 倒数第三行前加入 mysql_query("set names 'gbk'");
设定操作mysql的字符集为GBK
mysql_query("set names 'gbk'");
if ($this->_connectionID === false) return false;
if ($argDatabasename) return $this->SelectDB($argDatabasename);
return true;
}
(4)用户管理中的邀请操作,邮件发送失败~参考别人,未实验
错误信息:
{
Something went wrong sending email, please contact server administrator!
}
说明: 没找到解决方法
(5)不能自动过滤不属于仓库
错误信息:
{svn: URL 'file:///storage/yslProR/conf' non-existent in that revision (cmd: svn list --non-interactive file:///storage/yslProR/conf)
Command used: svn list --non-interactive file:///storage/yslProR/conf}
说明:由于不支持过涉仓库,所以在获取不是svn仓库时,就会报如上错误了.
通用性考虑不全:
1.不支持ldap的账号,只能管理传统的账号文件
2.不支持导入原有的权限分配,需要重新建立
3.导入现有库不支持自动过滤不属于库的信息即会把指定父目录下的子目录都当作是库
4.不支持多库配不同的权限文件
5.权限文件的格式只能基于[库名:相对路径],不支持[相对路径]
改进建议:
1. 用admin登陆,应该提醒用户创建一个新的管理账号
2. 用新的管理账号登陆,进行数据初始化
a. 导入仓库:指定仓库的目录获取且支持自动过滤不相关的库
b. 用户初始化:
(a)支持一对一即一个仓库对应一份账号文件
(b) 支持多对一即多个仓库对应一份账号文件
(c) 支持ldap账号,获取数据库的账号信息
c. 权限初始化:
(a)支持一对一即一个仓库对应一份权限文件
(b) 支持多对一即多个仓库对应一份权限文件
No comments:
Post a Comment