Subversion配置安装教程(一)

引言:一直以来我都认为,MS应该从开源项目中汲取有益的东西,开源项目也要向MS学习,而不是象网上每次提到.Net和Java就要打嘴仗一样,有些文人相轻的意思。^……^我从工作以来很有幸的能够参与多个Java和.Net项目开发,时常在这两种技术之间比较思考,现在有机会和大家分享,说的不对的地方,请大家多多指教。首先我准备谈谈SCM,个人认为在现在的大型软件开发中,团队合作是项目成功最重要的因素之一,尤其是使用.Net和Java这些强大的面向对象的语言开发程序,必然会多次分层,基于组件的共享等等,所以SCM就更重要了。MS的VSS我想大家应该都用过,也知道VSS的优劣,我就不多说了。(风传VSS不是MS自己开发的,记得有次我去过真正开发VSS的公司的网站,现在地址也忘记了。并且MS内部也不会使用VSS作为自己的SCM工具,呵呵,不知道是不是真的?)在以后的系列文章里,我会讲解Subversion,CVS这些主流的开源项目SCM工具,并且会延伸到CI(Continues Integration,即继续集成)和BugTrace领域,毕竟只有版本控制系统对于一个大型软件的开发是远远不够的。在这个旅程中,我还会带大家领略一下python(我的最爱。。。呵呵,不想试试吗?非常强大!)的旖旎风光,而且这一系列文章也会收录在我准备撰写的《Using Open Source Software to Implement Your .Net Applications》(中英双语版,呵呵。。。考察一下自己的英语)。首先来介绍一下Subversion,以下引自赛迪网-开放系统世界,作者:顾宏军
    长久以来,在开源世界中,CVS(Concurrent Versions System)一直都是版本控制的首选。但是现在用户有了另一个选择,就是Subversion。Subversion是下一代版本控制系统,能替代CVS,项目主页是http://subversion.tigris.org。 
    Subversion是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。 
    它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。。。


如果你使用过CVS就能体会到上文所说的Subversion好处了,比如目录版本控制,目录的改名等。对于Subversion的原子提交,我想多说几句,大家可以想象,我们一般做一个修改,可能需要改动多个文件,尤其现在大家多对分层已经趋之若鹜了,除非你还在用着哪种什么东西都写在一起的语言。(比如PB?呵呵,感觉好像是这样的东西。我现在正在作一个遗留系统的迁移到.Net上的工作,这个系统就是用类似PB的一种脚本语言Panther,ui,逻辑和数据访问全在一个文件里面,我在代码里面还看到了80年代的注释。呵呵,很强吧?我们公司几个程序员可能是中国为数不多的懂panther语言的人了。扯远了。。。)如果你的一次提交过程中,由于网路原因或者机器的硬件原因或者根本是你自己落下了一些文件没提交,在逻辑意义上这次提交是不完整的,Subversion的原子提交能很好的解决这个问题,个人认为这也是对于CVS最大的改进了。怎么样,是不是有些想数据库的事务的概念呢?动心了吧?ok,废话少说,let's go!(Follow me! Fire in the hole!^……^)

Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。下面我讲解的是基于Apache Http Server的Subversion,这样做几个好处:A.能使用WebDAV协议。B.能使用浏览器作为客户端工具浏览源码仓库。C.可以很容易的支持到SSPI(Windows域认证)和LDAP(AD?),这些都是Apache本身就支持的。D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。
在正式安装配置Subversion之前我们先来作点准备工作,由于我们以后会经常在命令行下执行命令,每次打开一个新的命令行窗口默认的当前目录都是C:\Documents and Settings\$UserName,这样在执行命令之前都要切换目录,很麻烦,所以我们先来解决这个问题。在“开始”-“运行”中输入“regedit”,打开注册表。找到\HKEY_CLASSES_ROOT\Folder\shell,如果没有shell,可以在Folder下新建一个名为shell的键,在shell下新建一个名为“命令行(Command Windows)”的键,在这个键之下再建一个新的名为“Command”的键,设置默认值为“cmd /K cd /d %L”。

完成后的效果如下:

这样当我们选中一个目录,在右键上下文菜单里面就多了一个“命令行(Command Windows)”的选项,单击这个选项就可以打开一个命令行窗口并且快速切换到当前选中的目录。说些题外话,很多人提到MS就义愤填膺,可是有多少人真正掌握MS的技术呢?比如这个小小的CMD命令,建议大家在命令行窗口中输入“cmd /?”,相信收获不少。前段时间在看候捷先生的《Word的排版艺术》,china-pub上很多留的书评都是不屑一顾,我不知道这些人是不是真的能把WinWord作为自己的“写作平台”?以前我都是用DockBook作为写作的工具,现在才知道Word可以这样用,MS也不是一无是处呀。。。
注意:如果你使用WinXP作为Subversion服务器,请打上SP1补丁,否则会导致错误的网络数据传输使Subversion的数据库不能正常使用。(我自己的Notebook是WinXP SP2,工作良好,至于Win2K没有测试,我想应该不会有什么问题吧?)
安装Subversion:
1.到www.apache.org上下载apache http server,注意要下载2.0.X以上的版,否则不能和当前最新的Subversion工作。
2.到http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91上下载Subversion当前1.1.3版本的二进制安装文件,一般tigris.org并不提供二进制包,这些二进制包是有一些志愿者维护的,所以可能不是当前最新的版本。如果你想尝鲜使用Subversion的最新版,请下载源码自己编译。
3.安装apache http server
4.安装Subversion
5.检查$\apache group\apache2\modules下是不是已经有了mod_dav_svn.so和mod_authz_svn.so
6.检查$\apache group\apache2\modules下是不是已经有了libdb42.dll,如图:

7.搜索$\apache group\apache2\conf\httpd.conf配置文件中的#LoadModule dav_fs_module modules/mod_dav_fs.so,把前面的注释#去掉;并检查LoadModule配置节的末尾是不是有了LoadModule dav_svn_module modules/mod_dav_svn.so和LoadModule authz_svn_module modules/mod_authz_svn.so,如图:

注意,请先安装Apache,然后再安装Subversion,这样上述5,6,7步骤都可以免了,在安装Subversion过程中它会自动拷贝相应文件到相应目录中,并且修改http.conf文件,然后重新启动apache服务使修改生效。但是我发现现在这个版本的Subversion安装文件可能有个bug,apache的http.conf的配置文件中#LoadModule dav_fs_module modules/mod_dav_fs.so注释没有去掉,所以大家还是小心检查一下。如果你是先安装的Subversion,然后再安装的Apache的,那么上述的步骤一个也不能漏,都需要自己手动完成。
配置Subversion:
1.在硬盘上建立源码库的根目录,例如E:\SVN
2.在E:\SVN之下建立一个新的目录,例如TestRepository作为我们的测试源码库
3.建立Subversion数据库,当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDB( Berkeley Database)。在命令行下输入svnadmin create --fs-type bdb TestRepository建立BDB格式的数据库(确保当前目录已经切换到E:\SVN\),在命令行下输入svnadmin create --fs-type fsfs TestRepository建立FSFS格式的数据库(确保当前目录已经切换到E:\SVN\)。建好数据库以后,到E:\SVN\TestRepository下看看是不是多了很多目录和文件,可以研究一下这些文件,对理解Subversion有帮助,但是不要试图直接修改这些文件!如图:

如果大家经常关注开源技术,就知道BDB是一个轻量级的关系数据库,可以作为一个轻巧的内置数据库,在很多开源项目下有很多应用,比如CVSTrac。FSFS格式主要的特点是可以支持Subversion的数据库和Subversion服务器可以在不同的物理机器上,可以通过网络共享(不知道是否支持NFS?),能很好的工作在MS Win98上,并且速度更快,但是由于FSFS是一种新的格式,稳定性可能没有BDB好。推荐大家使用BDB,毕竟BDB有很多年开发历史,比较稳定,而且我觉得把Subversion的DB和服务器分开放置好像没有什么必要吧?(谁能告诉我这样做的好处?),大家也不会拿一台Win98作server吧?^……^。不要试图在BDB的格式的数据库上使用网络共享,也不要使用网络磁盘映射,否则会导致无法预料的错误。
4.打开$\apache group\apache2\conf\httpd.conf配置文件,在文件的末尾加入以下语句,
<Location /svn>
DAV svn
SVNParentPath e:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
这里建立了一个虚拟目录http://yourServer/svn/,所有的Subversion源码仓库都在这个虚拟目录中,并且使用“passwd”文件中username/password(用户名/密码)列表访问http://yourServer/svn/。关于Subversion的安全配置是一个比较重要的部分,我会留到下次配置SSL加密连接再讲。
5.在命令行下切换到$\apache group\apache2,执行bin\htpasswd -c passwd <username>,这里<username>是你想要加入的用户名,比如doudou。执行这个命令成功以后就会在bin目录下建立一个passwd文件,之后如果再加入新的用户和更改已有用户的密码,执行bin\htpasswd passwd <username>即可。如图:

注意一定要在$\apache group\apache2下执行,这样生成的passwd文件$\apache group\apache2根目录下,而不是在bin目录下,apache默认是在$\apache group\apache2根目录下寻找passwd文件,如果你在bin目录下执行了这个命令请把生成的passwd文件剪切到$\apache group\apache2根目录下。这一点也可以从Apache的log日志中看得出来,如图:

6.重启Apache服务
7.在浏览器地址栏中输入 http://YourServer/svn/TestRepository,输入用户名密码,ok。Subversion现在已经可以正常工作了。
如图:


在写作本文的时候参考了TortoiseSVN的帮助文档,在此感谢TortoiseSVN团队杰出的工作!

posted on 2005-02-08 21:33 doudou 阅读(34552) 评论(34) 编辑 收藏

评论

#1楼  回复 引用   

一切正常啊!
2005-02-08 21:37 | 白芷

#2楼  回复 引用 查看   

应该是TortoiseSVN团队吧。: )
2005-02-18 23:03 | dudu      

#3楼[楼主]  回复 引用 查看   

呵呵,难得dudu老大也来了,写错了。。。不好意思。。。丢脸啊!
2005-02-18 23:05 | doudou      

#4楼  回复 引用 查看   

最近想学习一下Subversion, 你的文章很有帮助, 谢谢!
2005-02-18 23:16 | dudu      

#5楼[楼主]  回复 引用 查看   

不敢当,不敢当,那我得赶紧接着写了。。。呵呵。ps:你的名字和我很像。。。
2005-02-18 23:22 | doudou      

#6楼  回复 引用 查看   

: )
2005-02-18 23:25 | dudu      

#7楼  回复 引用 查看   

我先安装Apache,然后再安装Subversion,#LoadModule dav_fs_module modules/mod_dav_fs.so注释没有去掉。
2005-02-19 11:40 | dudu      

#8楼[楼主]  回复 引用 查看   

对的,我在前面也提到了:“但是我发现现在这个版本的Subversion安装文件可能有个bug,apache的http.conf的配置文件中#LoadModule dav_fs_module modules/mod_dav_fs.so注释没有去掉”,先装Apache再装Subversion配置起来比较简单。
2005-02-19 11:44 | doudou      

#9楼  回复 引用 查看   

我在文章中看过这段文字, 这里是为了说明一下的确没有去掉注释。
我已经配置成功!谢谢你提供如此详细的配置安装教程!
2005-02-19 11:57 | dudu      

#10楼[楼主]  回复 引用 查看   

呵呵,继续继续,还有些高级配置在二和三里面,比如权限的赋予和控制,如果你的Subversion要公开在internet上,最好配置ssl连接。
2005-02-19 12:00 | doudou      

#11楼  回复 引用 查看   

嗯!我学习SubVersion, 也是打算为博客园建立SubVersion服务器。继续看你的Subversion配置安装教程(二) 。
2005-02-19 12:07 | dudu      

#12楼[楼主]  回复 引用 查看   

好啊好啊,我能不能加入呢?我的qq:6748130,msn:java_aix@hotmail.com
2005-02-19 12:12 | doudou      

#13楼[楼主]  回复 引用 查看   

晕啊,在qq上或者msn上说吧
2005-02-19 12:16 | doudou      

#14楼  回复 引用 查看   

已在MSN中加了你。
2005-02-19 12:16 | dudu      

#15楼  回复 引用   

我是第一次接触subversion,对项目的开发过程也不是很了解,现我们公司要我开展软件配置管理工作,公司也是尝试,以前没试过.我现在要对开发人员做出一些使用规范,即相当于对开发人员存放源文件作出要求,希望大家给点意见,你们经验多,觉得开发人员应该注意些什么.
2005-03-02 15:26 | wubaochuan

#16楼  回复 引用   

不甚感激!!!
2005-03-02 15:27 | wubaochuan

#17楼  回复 引用   

我在 Win2000 Server 手动安装 WebDAV 失败了, 不知有没有人能给点提示?

我先安装了从 httpd.apache.org 的 apache_2.0.53-win32-x86-no_ssl.msi. 然后下载了 svn-win32-1.1.3-2.zip 并解压了.

然后把 svn 底下的两个 httpd module 都抄写到 apache root/modules 了, httpd.conf 也加如上面的更改. 但只要一加入了 svn 的 相关 LoadModule 指令, Apache 就不能正常起动. 把 svn 相关的 LoadModule remark 掉立刻就能起动了.

后来找到另一篇文章说到要把 subversion 的 directory 加入 path, 我也尝试把 subversion root/bin 加了进 path, 结果一样.

后来根据这篇把 libdb42.dll 也放进 apache root/modules, 结果一样.

后来我尝试用 apache -k start -e debug 来起动 apache, 画面出现一堆 loaded module blablabla 的东西, 没有任何特别的 error. 但 完结后 apache httpd 仍然没有起动. (与没有 load svn 的 module 而能成功起动的情况 所显示的画面基本上是一样的)

有人可以告诉我还可以从那里看到 apache 不能起动的原因吗? (我不熟 apache, 找了一阵子才找到 -e debug 的选项, 但也看不到什么特别)
2005-03-24 10:25 | Alien

#18楼  回复 引用 查看   

我也遇到了和Alien同样的现象,后来通过将subversion\bin目录下的intl3_svn.dll及libdb43.dll、libeay32.dll及ssleay32.dll文件拷贝至apache2\modules目录下解决问题。经试验,intl3_svn.dll为必需,没有则出现上面的错误,其他几个没有的话好像不会出错。
2005-11-01 15:22 | 安文      

#19楼  回复 引用   

ffd
2005-11-12 07:07 | fdffd[未注册用户]

#20楼  回复 引用   

DouDou能否问你一个问题,我的tortoiseSVN怎么看不到版本分支图,总是提示说图形不存在?是否要安装其他什么?谢谢
2006-01-27 03:02 | YiYun[未注册用户]

#21楼  回复 引用   

33252040是我的QQ,很希望能加入你的好友,谢谢
2006-01-27 03:05 | YiYun[未注册用户]

#22楼[楼主]  回复 引用 查看   

@安文
嗯,的确如你所说,需要copy这些文件,不过应该不会缺失这些文件,我想安装的Apache或者SVN版本有些问题
2006-08-11 23:05 | doudou      

#23楼[楼主]  回复 引用 查看   

@YiYun
抱歉,我很少上qq,你的问题很奇怪,我从未遇到过,或许还是软件版本的问题?
2006-08-11 23:07 | doudou      

#24楼  回复 引用   

Stopping httpd: [FAILED]
Starting httpd: [Fri Sep 08 19:15:44 2006] [warn] module dav_module is already loaded, skipping
httpd: Syntax error on line 200 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_dav_svn.so into server: /etc/httpd/modules/mod_dav_svn.so: cannot open shared object file: No such file or directory





<a href="http://www.lander.net.cn">蓝德科技--网站建设专家</a>


2006-09-08 19:51 | 蓝德科技[未注册用户]

#25楼  回复 引用   

我按如上的步骤配置,可以看到成功的界面(Web登陆),但是用TortoiseSVN登陆不能成功并有如下提示:
Error * PROPFIND request failed on '/svn/TestRepository' PROPFIND of '/svn/TestRepository': could not connect to server (http://kevin)

其中kevin是我的机器名.

搞了两天了都没搞定,极其郁闷啊,望高手们能指点一二,谢谢!!!
2006-11-09 09:51 | kevin[匿名][未注册用户]

#26楼  回复 引用   

我的怎么不行?
httpd.exe: Syntax error on line 115 of C:/Program Files/Apache Software Foundati
on/Apache2.2/conf/httpd.conf: API module structure `dav_svn_module' in file C:/P
rogram Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is garb
led - perhaps this is not an Apache module DSO?
Note the errors or messages above, and press the <ESC> key to exit. 20...


我下的apache_2.2.3-win32-x86-no_ssl.msi
svn-1.4.2-setup.exe
2006-11-24 11:20 | frefly[未注册用户]

#27楼  回复 引用   

CollabNet-Subversion-1.4-server-and-client-Windows.exe自带了一个apache_2.0.59,所以不需要另下apache了,而且567步都是不需要做的了。我现在还没配好,apache不提示我找不到passwd文件,但是就是登录不进去。
2006-12-22 15:16 | sigui[未注册用户]

#28楼  回复 引用   

搞清楚原因了,是不支持汉字……
2006-12-22 15:23 | sigui[未注册用户]

#29楼  回复 引用   

我的为什么出现:Could not open the requested SVN filesystem错误啊
2007-09-05 18:33 | mrben[未注册用户]

#30楼  回复 引用   

真的非常感谢 非常详细清楚
2007-10-15 11:12 | 风无言[未注册用户]

#31楼  回复 引用   

我也是先安装的apache http server,后安装的Subversion。为什么conf下的httpd.conf没有被更改呢,而且modules里也并没有自动复制mod_authz_svn.so和mod_dav_svn.so这两个文件呢
2008-07-10 20:08 | 无奈[未注册用户]

#32楼  回复 引用 查看   


自己摸索,一番痛苦之后,终于搞定了它。我怎么不早看到你的东西呢!
2008-09-24 18:10 | 楚风      

#33楼  回复 引用   

@Alien
我的也是这样
2008-11-04 10:50 | sd[未注册用户]

导航

<2005年2月>
303112345
6789101112
13141516171819
20212223242526
272812345
6789101112

公告

《Using Open Source Software to Implement Your .Net Applications》 is coming soon...

昵称:doudou
园龄:7年
粉丝:2
关注:0

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜