提问的智慧SVN版 - 提问者必读
发新话题
打印

[原创] windows server 2003下安装svnmanager并解决中文问题

windows server 2003下安装svnmanager并解决中文问题

最近几天刚刚安装好 svnmanager 并解决中文问题,现在和大家分享一下心得.
安装文档中参考了一些其他网友的发表的安装手册.

0.Windows server 2003 下安装基于apache的svn
apache_2.2.4-win32-x86-no_ssl.msi
svn-win32-1.4.4.zip
具体安装方法请参考论坛中其他帖子

1.安装php
php-5.2.5-Win32.zip 解压缩后就可以使用

2.开始配置http.conf及php.ini
1). 打开目录:"你的apache的安装目录"\conf\extra
新建一个名为:httpd-php5.conf 的文本文件,用记事本打开,添加以下内容
LoadModule php5_module "你php的安装目录\php5apache2_2.dll"

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php

PHPIniDir "你php的安装目录"
然后用记事本打开:"你的apache的安装目录"\conf\httpd.conf,在文件末尾添加一行:
Include conf/extra/httpd-php5.conf
2)修改php.ini-dist为php.ini并配置,打开php.ini后.设置好extension_dir的目录后.去掉";",调用你需要的dll即可,
因为我们前面在apache设置的时候.选择PHPIniDir的目录就在我们php的安装目录.所以无需将php.ini复制到windows目录下.
还有就是提示.如果你要调用mcrypt,mhash,mysql的话..记得把php目录下的.libmcrypt.dll,mhash.dll,libmysql.dll 复制到 windows目录的system32目录下
这里需要mysql,所以复制 libmysql.dll 到c:\windows\system32目录,为下面的安装mysql做准备.

2安装mysql,我用的是 mysql-5.0.18-win32的安装包,
setup安装完以后,配置mysql,注意配置过程中字符集选择 GBK
在命令行下进入mysql的安装目录,
输入命令mysql –u root –p
输入密码进入数据库,
然后使用命令create database svnmanager 创建一个svn的数据库。
修改 php.ini 文件 去掉如下几行的注释:

extension = php_mbstring.dll

extension = php_mysql.dll

extension = php_gb2.dll

extension = php_mysqli.dll

extension = php_pdo.dll

extension = php_pdo_mysql.dll

修改 extension_dir= “D:\php-5.2.5-Win32\ext”

修改 default_charset = "gbk"

3.打开php5的文件夹,执行go-pear.bat这个文件,一直敲回车,完成后会生成一个PEAR_ENV.reg的注册表文件,双击导入注册表信息。
  安装VersionControl_SVN-0.3.1.tgz。把VersionControl_SVN-0.3.1.tgz复制到php5的目录,
  从命令行进入php5的目录 输入命令pear install -alldeps VersionControl_SVN-0.3.1.tgz
  安装VersionControl_SVN-0.3.1.tgz的时候需要另外XML_Parser-1.2.8.tgz这个包,如果你可以上网请执行上面的语句自动下载,如果不可以上网,可以先复制XML_Parser-1.2.8.tgz这个包到php5的目录 先用pear install -alldeps XML_Parser-1.2.8.tgz 安装xml后再用上面的命令来安装VersionControl_SVN-0.3.1.tgz.

修改 php.ini 文件

; Windows: "\path1;\path2"
include_path = ".;D:\php-5.2.5-Win32\PEAR"

安装完成后,用pear list命令查看安装是否成功.
   
4.安装svnmanager
  把svnmanager-1.03.zip解压到apache的缺省发布目录,一般是htdocs下面,改目录名为svnmanager,这里如果我改为其他名字使用起来就用问题,大家可以试试,是否可以改为其他名字.
  复制config.php.win并重命名为config.php.
  修改config.php文件.
$htpassword_cmd     = "c:\\Progra~1\\Apache~1\\Apache2.2\\bin\\htpasswd"; //htpasswd命令的完整路径
$svn_cmd            = "D:\\svn-win32-1.4.4\\bin\\snv"; //svn命令的完整路径
$svnadmin_cmd       = "D:\\svn-win32-1.4.4\\bin\\snv\\svnadmin"; //svnadmin命令的完整路径
$svn_repos_loc                         =         "E:\\SVNDATA\\";          //svn目录

$svn_passwd_file                 =         "E:\\SVNDATA\\apache_authz";  //passwd文件
$svn_access_file                 =         "E:\\SVNDATA\\svn_access_file"; //auth文件

$smtp_server                         =         "smtp.mailserver.net";

$dsn = "mysql://root:mysql~localhost@localhost/svnmanager";         //配制数据库包括用户名、密码、数据库地址和名称
这些请对照你的http.conf文件的svn配制进行填写.


5.解决中文乱码问题
修改 svnmanager\global\header.tpl  将页面的字符集设置为 gbk 或者 gb2312
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

因为这里使用的是 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;       
        }

重起apache,安装完成,仔细观察下apache log目录下的error.log文件,看看有什么错误没有.
如果没有错误,打开浏览器,输入http://localhost/svnmanager就可以登陆了。
第一次登陆需要使用一个默认的临时用户admin 密码 admin,登录后要创建一个管理员帐号,当你logout后,临时帐号将被禁用。

Svnmanager使用很简单,分为三大项目,用户管理,组管理和库管理,使用很简单,但是在使用的时候会把你以前的拥护和权限清空(就是passwd和auth文件),所有这里要重新建立用户 ,组和权限,然后在库管理里导入你本地的已经有的库就ok了

此外我还做了个 svnmanager 的汉化包,时间仓促,可能会有错误,欢迎大家下载使用并修正.

附件

svnmanager-1.03_CHS.rar (21.25 KB)

07-11-29 13:47, 下载次数: 449 , 阅读权限: 1

svnmanager1.03 汉化包

demo.JPG (35.04 KB)

07-11-29 13:47

demo.JPG

本帖最近评分记录
  • Admin 威望 +2 精品文章 07-11-29 14:02

TOP

马上试试

TOP

要svnmanager支持中文目录的话,只要两步不要那么复杂的。
1.Mysql数据库的字符集选的都是utf8。
2.C:\windows\下的php.ini文件中需要指定default_charset = "gb2312"

这样就可以了。

TOP

因为我的这个数据库还要做其他的用处,必须使用GBK字符集,不能使用UTF8字符集。毕竟GBK对中文支持的好

TOP

问楼主一声。你配置好后,在公司实际中使用了吗?效果如何??

TOP

用了
的确方便了不好
用户管理和权限控制比较方便,新建project也容易多了
全部通过web方式实现管理

TOP

嗯。我现在也是再用svnmanager管理我们的svn,简单方便多了,虽然svnmanager的分组再选择组用户的时候不是很方便,不过比自己修改文件好多了。

TOP

麻烦解决了中文问题的朋友测试一下,目录名为'研发部',设置权限后,显示正常吗?我的'研发'显示正常,但'部'字显示不正常.

TOP

1、把数据库、表和字段的字符集改成gbk或者gb2312,这是因为你的页面编码是gbk的,如果数据库不对应,就会乱码
2、修改程序中连接数据库的字符集,也就是adodb的链接部分:
在文件 /prodo-0.2.3/framwork/data/adodb/drivers/adodb-mysqli.inc.php 中 88行 if ($argDatabasename)  return $this->SelectDB($argDatabasename); 语句前加入 一下语句:mysqli_query($this->_connectionID,"set names 'gbk'");
3、修改生成authz.conf文件的编码格式为utf-8,这是因为svn只认utf8格式的文件
在文件 /libarary/class.accessfile.php 中第177行 require ("config.php");语句前加入以下语句 $accessfile = mb_convert_encoding($accessfile, 'UTF-8','GBK');

ok,试试吧,应该没有问题了,我的在linux+apache下已经解决,widows应该也是差不多的。

TOP


不错,谢谢提供

TOP

楼主我按照你这上面做了,可是怎么权限文件AUTHZ被SVNMANAGER改变了。不能用了。
而且PASSWD文件的内容却没有变化。
我把<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath E:\repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "E:\Program Files\CollabNet Subversion Server\httpd\bin\passwd"
#AuthzSVNAccessFile "E:\repository\svn\conf\authz"
Require valid-user

</Location>
文件中的#AuthzSVNAccessFile "E:\repository\svn\conf\authz"注释掉后才能使用版本库。怎么回事呢。有人知道告诉我下 谢谢啦

TOP

都按上面的改了,增加权限还是不行:

InternalError
ADODB_Exception: mysql error: [1406: Data too long for column 'path' at row 1] in EXECUTE("INSERT INTO userprivileges (id, userid, repositoryid, path, access) VALUES (null, '9', '6', '/爱仕达', '3')")

#0 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Data\adodb\adodb.inc.php(874): adodb_throw('mysql', 'EXECUTE', 1406, 'Data too long f...', 'INSERT INTO use...', false, Object(ADODB_mysql))
#1 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Data\adodb\adodb.inc.php(848): ADOConnection->_Execute('INSERT INTO use...', false)
#2 [internal function]: ADOConnection->Execute('INSERT INTO use...')
#3 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Data\TAdodb.php(114): call_user_func_array(Array, Array)
#4 [internal function]: TAdodb->__call('Execute', Array)
#5 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\svnmanager\RepositoryModule\DataModule.php(264): TAdodb->Execute('INSERT INTO use...')
#6 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\svnmanager\RepositoryModule\UserPrivilegesEditPage.php(355): DataModule->addUserPrivileges('9', '6', '/??????', 3)
#7 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\TComponent.php(550): UserPrivilegesEditPage->onClickAddBtn(Object(TButton), Object(TEventParameter))
#8 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Web\UI\WebControls\TButton.php(192): TComponent->raiseEvent('OnClick', Object(TButton), Object(TEventParameter))
#9 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Web\UI\WebControls\TButton.php(176): TButton->onClick(Object(TEventParameter))
#10 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Web\UI\TPage.php(1005): TButton->raisePostBackEvent('')
#11 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\Web\UI\TPage.php(950): TPage->handlePostBackEvent()
#12 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\prado-2.0.3\framework\TApplication.php(483): TPage->execute()
#13 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnmanager\index.php(5): TApplication->run()
#14 {main}

TOP

发新话题
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件