SVNMANGER 安装

  • 环境:
    centos-7.9
    mysql-5.7
    subversion-1.8.19
    httpd-2.4.6-97
    php-5.4.16
    php-pear-1.9.4
    manmanager-1.10

一、安装subversion

1
2
3
4
5
yum install subversion mod_dav_svn mod_ssl openssl httpd*  -y

# 确认版本

svn --version

二、安装php

1
yum install -y php php-mysql php-pear php-mbstring php-mysqli 

三、SVNmanager

1
2
3
cd  /usr/local
wget -c https://sourceforge.net/projects/svnmanager/files/svnmanager/1.10/svnmanager-1.10.tar.gz
wget -c http://download.pear.php.net/package/VersionControl_SVN-0.5.2.tgz

将svnmanager解压至/var/www/html下

1
2
3
4
5
6
7
8
tar zxvf  svnmanager-1.10.tar.gz
mv svnmanager-1.10 svnmanager
cp -R svnmanager /var/www/html/
//pear安装VersionControl_SVN-0.5.2 (与之前的版本不同,不需要再安装XML_Parser包)
pear install VersionControl_SVN-0.5.2.tgz

// 方式2 国外资源无法解析 修改修改 /etc/resolv.conf nameserver 8.8.8.8 才能安装上 VersionControl_SVN
pear install -f -o VersionControl_SVN

配置svnmanager中的config.php文件

svnmanager的配置文件在/var/www/html/svnmanager目录下,有一个config.php.linux和config.php.win,分别针对Linux和Windows操作系统下的配置模板.Copy config.php.linux 到config.php

1
2
3
4
5
6
7
8
9
10
11
12
$htpassword_cmd = "/usr/bin/htpasswd";
$svn_cmd = "/usr/bin/svn";
$svnadmin_cmd = "/usr/bin/svnadmin";
$svn_config_dir = “/etc/access/";
$svn_repos_loc = "/data/svndata/";
$svn_passwd_file = " /etc/access/passwd";
$svn_access_file = " /etc/access/authz";
$smtp_server = "smtp.domain.org";
$dsn = "mysqli://admin:admin@127.0.0.1/svnmanager"; # (请<font color="red">注意</font>这里使用的是mysqli)
//Administrator account
$admin_name = "admin";
$admin_temp_password = "admin”;

配置访问权限

1
2
chown -R apache:apache /var/www/html/svnmanager/
systemctl restart httpd

四、报错

一、表现是下拉出现中文乱码

svnmanager1.10安装完毕后,选择“Repository Admin”–>”Group Privileges”,会出现repository的列表,选择其中一个”Select”后,会出现如下错误:

1
2
3
4
5
6
7
8
9
10
11
VersionControl_SVN_Exception: "svn_path" is not a valid option
#0 /usr/local/php/lib/php/VersionControl/SVN.php(267): VersionControl_SVN_Command->setOptions(Array)
#1 /usr/local/php/lib/php/VersionControl/SVN.php(226): VersionControl_SVN::init('list', Array)
#2 /opt/apps/web/php/svnmanager/svnmanager/RepositoryModule/GroupPrivilegesEditPage.php(214): VersionControl_SVN::factory(Array, Array)
#3 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TControl.php(419): GroupPrivilegesEditPage->onLoad(Object(TEventParameter))
#4 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TPage.php(1079): TControl->onLoadRecursive(Object(TEventParameter))
#5 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TPage.php(955): TPage->onLoadRecursive(Object(TEventParameter))
#6 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/TApplication.php(483): TPage->execute()
#7 /opt/apps/web/php/svnmanager/index.php(5): TApplication->run()
#8 {main}

解决方案

解决方法是编辑/var/www/html/svnmanager/svnmanager/RepositoryModule目录下的

UserPrivilegesEditPage.php 和 GroupPrivilegesEditPage.php 文件 :

1
$options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ARRAY, 'svn_path' => $svn_cmd);

改成:

1
$options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ARRAY);

二、报错2 解决中文目录问题

早期的版本,svnmanager连中文目录都无法显示,主要是在权限分配时。但svnmanager-1.10已经支持显示中文目录了,但也仅仅是能在下拉列表中显示而已,当你想进一步查看该中文目录下的子目录时,就会报类似如下的错误:

1
2
3
VersionControl_SVN_Exception: Execution of command failed returning: 1
svn: E000022: Can't convert string from native encoding to 'UTF-8':
svn: E000022: file:///data/svn/repositories/developer///doc/?\228?\184?\147?\229?\136?\169

解决方法:

修改/usr/share/pear/VersionControl/SVN/Command.php文件,在run()方法中找到如下代码:

1
2
3
4
5
if (!$this->passthru) {
exec("{$this->prependCmd}$cmd 2>&1", $out, $returnVar);
} else {
passthru("{$this->prependCmd}$cmd 2>&1", $returnVar);
}

改为:

1
2
3
4
5
if (!$this->passthru) {
exec("export LC_CTYPE=en_US.UTF-8 && {$this->prependCmd}$cmd 2>&1", $out, $returnVar);
} else {
passthru("export LC_CTYPE=en_US.UTF-8 && {$this->prependCmd}$cmd 2>&1", $returnVar);
}

三、补充

3.1 数据库编码检查

1
show variables like 'character_set_%';

不是的话要修改my.cnf 设置编码为utf-8

3.2 查看命令输出结果

1
2
3
4
5
/usr/bin/svn list --config-dir /data/tz_svn/svn_pass --non-interactive 'file:///data/tz_svn/svn_data/tandy_2019/hr'

中文目录1
中文目录2

参考资料

https://blog.csdn.net/weixin_30955341/article/details/94981519

http://svnmanager.sourceforge.net/index.php?page=faq

https://www.cnblogs.com/reblue520/p/7494035.html