安装和配置Windows下SVN开发环境
 

2009-06-05 作者:marshal 来源:marshal的blog

 

简介

本文介绍在WindowsXP(在Windows2003下应该也可以)安装SVN(subversion)及其相关集成工具。

实现如下功能:

  • 通过http访问版本控制器
  • 通过Web应用程序设置用户认证和授权
基本步骤

安装Apache Http Server

下载最新版本的Apache Http Server Windows安装包。

下载地址:http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.2.6-win32-x86-no_ssl.msi

通过安装向导默认安装即可。

需要注意的是: Network domain,Server name和Email address都必须填写适当的内容。

安装完成后,通过http://localhost访问成功即可。

安装SVN

下载最新版本的Subversion安装包。

下载地址:http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe

默认安装即可。

检查是否安装成功,在命令行中,输入:
 
Sh代码 复制代码
  1. svn --version  
显示版本号既成功。

创建一个svn repository

创建svn repository(仓库)的根目录,比如e:/svn

在命令行下,进入e:/svn

输入如下命令:

 
Sh代码 复制代码
  1. svnadmin create documents  
升级svn支持apache2.2

svn默认1.4.5版本,是基于apache2.0编译的。

使用Microsoft Visual C++ 6.0。

apache2.2版本,基于更新的C++.net环境。

下载svn1.4.5针对apache2.2的分发包(没有安装包,所以麻烦一点)。

地址是:http://subversion.tigris.org/downloads/1.4.5-win32/apache-2.2/svn-win32-1.4.5.zip

下载后,解压缩,并覆盖安装的svn目录即可。

SVN与Apache的集成

将安装后svn的bin目录下所有后缀是so的文件复制到apache的modules目录下。

将安装后svn的bin目录下所有后缀是dll的文件复制到apache的bin目录下,如果提示是否覆盖,一定注意不要覆盖apache目录下的dll,主要是apr方面的dll

编辑apache/conf/httpd.conf文件:

找到配置文件中的LoadModule dav_module modules/mod_dav.so和LoadModule dav_fs_module modules/mod_dav_fs.so,将该两行前的#号去掉;

在上述内容后加入:
 
Sh代码 复制代码
  1. LoadModule dav_svn_module modules/mod_dav_svn.so   
  2. LoadModule authz_svn_module modules/mod_authz_svn.so  
在配置文件末尾添加如下内容:
 
Sh代码 复制代码
  1. <Location /svn>   
  2. <Location /svn>   
  3. DAV svn   
  4. SVNParentPath e:/svn   
  5.   
  6. AuthType Basic   
  7. AuthName "Subversion Reporsitory"  
  8. AuthUserFile "D:/Program Files/Apache Software Foundation/Apache2.2/conf/svnpasswd"  
  9.   
  10.   
  11. AuthzSVNAccessFile "D:/Program Files/Apache Software Foundation/Apache2.2/conf/svnauthz"  
  12. Require valid-user    
  13. </Location>  
重启apache即可。

创建svn用户,在命令行中,进入D:/rogram Files/Apache Software Foundation/Apache2.2/bin目录,输入:

Sh代码 复制代码
  1. htpasswd -c ../conf/svnpasswd marshal  
创建password文件,并且创建marshal用户。

conf目录下创建svnauthz用于授权,以下是简单的文件内容:
 
Sh代码 复制代码
  1. [/]   
  2. marshal = rw  
上述文件为刚创建的marshal用户设置了对所有目录的读写的权限。

重启apache,并访问http://localhost/svn/documents

如有问题,通过apache/logs/error.log检查问题。


安装SVNManager

安装svnmanager,用于通过web的方式:
  • 创建用户和修改密码
  • 创建和修改用户权限
  • 创建用户组和修改用户组的权限
  • 创建SVN库
安装svnmanager,需要安装PHP环境和MySQL。

安装php环境,可参考:http://marshal.javaeye.com/blog/147139或者其他文档。

安装MySQL,本文使用MySQL 5.0.45安装包默认安装即可。

为svnmanager创建数据库:

Shell代码 复制代码
  1. create database svnmanager CHARACTER SET utf8;  
svnmanager网址:http://svnmanager.sourceforge.net/

svn需要PHP支持PEAR。

进入php的PEAR目录,命令行输入:

 
Sh代码 复制代码
  1. php go-pear.phar  
出现提示的时候,回车即可。

svn需要VersionControl_SVN,这需要通过PEAR安装:

 
Sh代码 复制代码
  1. pear install -a VersionControl_SVN-0.3.1  
当前svnmanager版本是1.03

另外,需要修改php.ini文件,取消下列行的注释:

 
Sh代码 复制代码
  1. extension = php_mbstring.dll   
  2. extension = php_mysql.dll   
  3. extension = php_gb2.dll   
  4. extension = php_mysqli.dll   
  5. extension = php_pdo.dll   
  6. extension = php_pdo_mysql.dll  
下载svnmanager,路径为:http://sourceforge.net/project/showfiles.php?group_id=135933

apache/htdocs目录下,建一个目录svnmanager

将下载的文件解压缩到上述的svnmanager中。

svnmanager目录中的config.php.win改名为config.php

修改文件中的内容如下:
 
Php代码 复制代码
  1. <?php   
  2. //   
  3. //  SVNManager config.php file for Windows based servers   
  4. //   
  5.   
  6. $htpassword_cmd     = "D:\\Program Files\\Apache Software Foundation\\Apache2.2\\bin\\htpasswd";   
  7. $svn_cmd            = "D:\\Program Files\\Subversion\\bin\\svn";   
  8. $svnadmin_cmd       = "D:\\Program Files\\Subversion\\bin\\svnadmin";   
  9.   
  10. //Subversion locations   
  11. $svn_repos_loc          =   "e:\\svn";   
  12. $svn_passwd_file        =   "D:\\Program Files\\Apache Software Foundation\\Apache2.2\\conf\\svnpasswd";   
  13. $svn_access_file        =   "D:\\Program Files\\Apache Software Foundation\\Apache2.2\\conf\\svnauthz";   
  14.   
  15. //If the following is set, removing a repository will cause it to be   
  16. //moved to this location rather than being deleted.   
  17. $svn_trash_loc          =   "";   
  18.   
  19. // If $svnserve_user_file is defined, then SVNManager will create a   
  20. // user/password file suitable for use with SVNSERVE   
  21. //   
  22. // When not set, this feature isn't enabled.   
  23. //   
  24. // Warning: When enabled, this mode requires that passwords are stored in the database readable!   
  25. //    
  26. // Note: When is feature is enabled later, passwords need to be re-set before they are included in   
  27. //       the svnserve user file.   
  28. //   
  29. //$svnserve_user_file       =   "c:\\svn\\svnserve_passwd_file";    
  30. $svnserve_user_file = "";   
  31.   
  32. //SMTP Server for outgoing mail   
  33. $smtp_server            =   "smtp.mailserver.net";   
  34.   
  35.   
  36. //Data Source Name (only tested with mysql and sqlite databases!!)   
  37. //   
  38. //Either:   
  39. //    
  40. //Use the createtables.sql script to build the tables in a mysql database   
  41. //    
  42. // or   
  43. //   
  44. //An empty SQLite database will automatically be generated with the first   
  45. //startup!    
  46. //   
  47. //Please note that if you change the directory for a SQLite database that you   
  48. //choose a location that is not accessible via web!!   
  49. //   
  50.   
  51. $dsn = "mysql://root:password@localhost/svnmanager";   
  52.   
  53. //$dsn = "mysql://svnmanager:svnmgmpw@localhost/svnmanager";   
  54. //The following location is not readable from internet by means of an .htaccess file   
  55. //$dsn = "sqlite://svnmanager\\svnmanager.db";                         
  56.   
  57. //Administrator account   
  58. //   
  59. //This account can be used to create a first administrator user.   
  60. //When an administrator user is added, this account doesn't work   
  61. //anymore!   
  62. //   
  63. $admin_name          = "admin";   
  64. $admin_temp_password = "admin";   
  65.   
  66. // If $post_create_script is defined, then this script / command will be   
  67. // executed after a repository is created.    
  68. // When the script/command is executed the one and only parameter will be   
  69. // the physical location of the repository.   
  70. // This might copy a default set of hooks or config files   
  71. //   
  72. // $post_create_script = "svn-update-config-files.bat";   
  73.   
  74. ?>  
重启apache,然后通过http://localhost/svnmanager访问。

用户名/密码都是:admin

创建第一个用户,通过user admin链接,点击add按钮。

注意构选admin复选项。

通过刚刚创建的用户登录,就可以看到各种功能的链接。

以后就可以通过该界面创建用户和权限了,而不需要再通过svn和apache的命令和配置文件了。

另外,可下载中文汉化包,见:http://bbs.iusesvn.com/viewthread.php?tid=2122

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织