Windows下SVN、Apache和TortoiseSVN的配置安装一、SVN、Apache和TortoiseSVN的简介1、TortoiseSVNTortoiseSVN是Subversion版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将Subversion和版本控制系统看作一种“时间机器”。某些版本控制系统也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性-比如,对编程语言的支持,或者提供程序构建工具。不过Subversion并不是这样的系统;它是一个通用系统,可以管理任何类型的文件集,包括源代码。TortoiseSVN的特性是什么让TortoiseSVN成为一个好的Subversion客户端?下面是一个简短的特性列表。外壳集成TortoiseSVN与Windows外壳(例如资源管理器)无缝集成,你可以保持在熟悉的工具上工作,不需要在每次使用版本控制功能时切换应用程序。并且你不一定必须使用Windows资源管理器,TortoiseSVN的右键菜单可以工作在其他文件管理器,以及文件/打开对话框等标准的Windows应用程序中。你必须牢记,TortoiseSVN是有意作为Windows资源管理器的扩展开发,因此在其他程序可能集成的并不完整,例如重载图标可能不会显示。重载图标每个版本控制的文件和目录的状态使用小的重载图标表示,可以让你立刻看出工作副本的状态。Subversion命令的简便访问所有的Subversion命令存在于资源管理器的右键菜单,TortoiseSVN在那里添加子菜单。因为TortoiseSVN是一个Subversion客户端,我们也很愿意为你展示一些Subversion本身的特性:目录版本控制CVS只能追踪单个文件的历史,但是Subversion实现了一个“虚拟”文件系统,可以追踪整个目录树的修改,文件和目录都是版本控制的,结果就是可以在客户端对文件和目录执行移动和复制命令。原子提交提交要么完全进入版本库,要么一点都没有,这允许开发者以一个逻辑块提交修改。版本控制的元数据每个文件和目录都有一组附加的“属性”,你可以发明和保存任意的键/值对,属性是版本控制的,就像文件内容。可选的网络层Subversion在版本库访问方面有一个抽象概念,利于人们去实现新的网络机制,Subversion的“高级”服务器是Apache网络服务器的一个模块,使用HTTP的变种协议WebDAV/DeltaV通讯,这给了Subversion在稳定性和交互性方面很大的好处,可以直接使用服务器的特性,例如认证、授权、传输压缩和版本库浏览等等。也有一个轻型的,单独运行的Subversion服务器,这个服务器使用自己的协议,可以轻松的用SSH封装。一致的数据处理Subversion使用二进制文件差异算法展现文件的区别,对于文本(人类可读)和二进制(人类不可读)文件具备一致的操作方式,两种类型的文件都压缩存放在版本库中,差异在网络上双向传递。高效的分支和标签分支与标签的代价不与工程的大小成比例,Subversion建立分支与标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间,以及很小的版本库空间。良好的维护能力Subversion没有历史负担,它由一系列良好的共享C库实现,具有定义良好的API,这使Subversion非常容易维护,可以轻易的被其他语言和程序使用。2、ApacheApache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。3.SVNsvn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。运行方式svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据(我在搞ldap时就深受其害,没法根治),所以还是FSFS方式更安全一点。二、安装过程(1)、SVN的安装1.下载安装软件=11151&expandFolder=11151&folderID=91或者下载相应的安装包(Setup-Subversion-1.6.13.msiforwindows32)2、双击下载的程序,进行安装3、点击是4、点next5,选择Iaccepttheagreement,点击next6、点击next7、选择安装路径,可以默认8、选择StartMenuFolder,可以默认9,点击next10、点击install11、安装等待中12、SomeInformation,点击next13、Finish(2)、Apache的安装过程下载安装软件下载1、点击exe,开始安装,点击next2、选择Iaccept….点击next3、ReadtheInformation点击next4、在设置NetwotkDomain和ServrName的时候,没有自己的域名可以设置为localhost,Email填你自己的Email下面两个选择项forAllUsers,onport80,asaService--Recommended.意思是为所有用户安装程序和快捷方式,端口80,作为服务安装,推荐onlyforCurrentUser,onport8080,whenstartedManually.意思是仅为当前用户安装程序和快捷方式,端口8080,启动apache服务手动启动选择第一个注意80端口有没被占用,第二个则注意8080端口占用问题。5、一般选择Typical6、选择安装路径。可以选择默认7、点击Install9、安装进行中10.安装完成11、测试在网页中输入http://localhost/如果安装成功会出现下面的界面(3)、Tortoisesvn的安装过程1、下载安装软件下载地址:、双击exe开始安装3、点击next4、选择Iaccept….点击next5、选择要安装的6、点击next7、安装进行中8.安装完成三、配置过程(1)第一步在C:\ProgramFiles\Subversion\bin\目录下复制下面两个文件mod_authz_svn.somod_dav_svn.so粘帖到C:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\modules,然后再打开C:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\httpd.conf文件.找到去掉前面的注释符号#然后再下面添加LoadModuledav_svn_modulemodules/mod_dav_svn.soLoadModuleauthz_svn_modulemodules/mod_authz_svn.so(2)第二步模块的加载设置完成,下面我们要设置SVN的版本库目录,以使我们的apache能知道访问不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录在httpd.conf文件中,增加如下内容:例子一:Location/svn/myprojectDAVsvn#设置存取权限控制文件所在地SVNPathE:/svnroot/myprojectAuthzSVNAccessFileE:/svnroot/myproject/conf/access.auth先尝试匿名操作,如有必要再转向用户认证SatisfyAnyRequirevalid-user如何验证用户AuthTypeBasicAuthNameSubversionrepositoriesAuthUserFileE:/svnroot/myproject/conf/users.authRequirevalid-user/Location例子二:(MyApacheSVNhttp.conf:)###SVNLocation/svnDAVsvnSVNListParentPathonSVNParentPathC:\svnrootAuthzSVNAccessFileC:/svnroot/ApacheSVN/conf/authz#SatisfyAnyRequirevalid-userAuthTypeBasicAuthNameApacheSVN测试版本库AuthUserFileC:/svnroot/ApacheSVN/conf/users.authRequirevalid-user#下面表示允许匿名读取#LimitExceptGETPROPFINDOPTIONSREPORT#Requirevalid-user#/LimitExcept/Location例子三:(CallCenterSVNhttpd.conf配置:)###SVNLocation/svn#表示可通过URL()来访问Subversion版本库,#注意红字部分与配置中所写的要一样,而且大小写是区分的。DAVsvn#让Apache知道负责此部分的模块是哪个。SVNListParentPathon#在Subversion1.3及更高版本中,#这个配置使得Subversion列出由SVNParentPath指定的目录下所有的版本库SVNParentPathC:\svnroot#告诉Subversion在目录C:\svnroot下寻找版本库#SVNPathC:\svnroot\ApacheSVN#指定只使用单一版本库,与SVNParentPath配置不能并存AuthTypeBasic#启用基本的验证,比如用户名/密码验证AuthNameSVN版本库#当一个验证对话框弹出时,告诉用户这个验证是用来做什么的#在弹出的对话框中的“SVN版本库”#就是前面配置文件中所写的相关AuthName的内容。AuthUserFileC:/svnroot/ApacheSVN/conf/users.auth#指定C:/svnroot/ApacheSVN/conf/users.auth为密码文件,用来验证用户的用户名及密码#注意如果这个密码文件的路径带有空格,要加上双引号,比如:#AuthUserFile“D:\Program\CollabNetSubversionServer\httpd\conf\passwd”#如果不加上双引号,启动ApacheHTTPServer时会报错找不到这个文件。#对于配置文件中的与路径相关的,如果路径带有空格,要注意将路径用双引号引起来。Requirevalid-user#限定用户只有输入正确的用户名及密码后才能访问这个路径#AuthzSVNAccessFileC:/svnroot/ApacheSVN/conf/authz#指定C:/svnroot/ApacheSVN/conf/authz来限定各个用户或组在版本库中目录的访问权限#如果想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,#可以将Requirevalid-user行和AuthzSVNAccessFile行注释,下面表示允许匿名读取:#LimitExceptGETPROPFINDOPTIONSREPORT#Requirevalid-user#/LimitExcept