SVN在Windows下安装

摘要:
请注意,版本应该是SVN服务器支持的版本。2.安装:安装后,可以通过修改Apache的httpd.conf.1中的侦听器来更改Apache的端口。首先,在Subversion安装目录bin中安装以下两个文件:mod_authz_Svn.so和mod_dav_Svn.so复制到Apache安装目录模块;

SVN在Windows下安装 一、准备工作:
1、 Http服务器:apache2.X  官方网站为http://httpd.apache.org/
2、 Svn:官方网站为http://subversion.tigris.org/
3、 客户端程序(可选):TortoiseSVN(如果想用此工具建库,要注意版本应该是SVN服务器支持的版本)

二、安装:
1、 apache服务器正常安装即可,如果80端口正在使用,为避免安装时出现端口冲突,可暂时停止80端口对应的服务(如:IIS)。安装完成可以通过修改apache的httpd.conf中的listener来更改apache的端口。
2、 SVN:安装简单一路next即可。
3、  客户端程序(可选):TortoiseSVN,一路next,安装完要重启。

三、配置:
1、首先将Subversion安装目录bin\下面的两个文件:mod_authz_svn.so和mod_dav_svn.so复制到Apache安装目录modules\目录下; 再将Subversion安装目录bin\下面的所有.dll文件复制到Apache安装目录bin\目录下。
2、 需要再修改httpd.conf,并做如下修改:
找到Apache安装目录下的conf目录,用文本编辑器打开httpd.conf,找到一下两行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

将每行前面的注释符“#”去掉。再在所有LoadModule语句的最后添加一下几行:

#SVN
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3、 建立一个SVN存放文件的目录,例如:D:\svnrepo。
4、 告诉Apache我们的资源库所在的路径,可以通过Location指令来完成这个设置。因为不希望为每个单独的项目都进行单独的设置,所以我们把所有项目都存放在统一的资源库目录,那么可以使用SVNParentPath指令来指定存放所有项目的路径。在httpd.conf文件最后添加下面配置:  
#SVN
<Location /svn/>
    DAV svn
    SVNListParentPath on
    SVNParentPath "D:/svnrepo"
    #SVNPath "D:/svnrepo/test"
 
    ####################认证的类型
    AuthType Basic
    #################### 认证的名称,显示于登录提示框
    AuthName "Subversion 资源库,请登录 !"
    ####################Which password file to use for authentication 存储用户登录信息的文件
    AuthUserFile D:\svnrepo\passwd
    #################### 限定各个用户或组在版本库中目录的访问权限
    AuthzSVNAccessFile D:\svnrepo\svnaccessfile
    #################### 让所有用户对版本库都有读的权限而只有特定的用户才有写的权限
    Require valid-user
</Location>

四、添加用户:
打开命令行工具(cmd.exe),转到apache的bin目录下,参考以下命令添加用户。
说明:创建用户 zj
输入:htpasswd –c D:\svnrepo\passwd zj
说明:使用-c参数来创建一个passwd文件
输出:
New password: *****
Re-type new password: *****
Adding password for user zj
再创建用户的时候就不用-c参数,而是用-m参数,因为文件passwd 已经创建。
五、创建svn资源库:
用 TortoiseSVN在D:/svnrepo下创建test资源库,此处注意我遇到的一个问题:如果TortoiseSVN的版本过高,而SVN服务器的版本过低有可能造成,创建的资源库无法访问(SVN Could not open the requested SVN filesystem)。因此版本要相符。
当然为避免上面的问题也可以直接用命令来创建,在命令行窗口,转到svn的bin下,
svnadmin create d:\svnrepo\repository
六、配置访问权限:
在d:\svnrepo下建立一个名为 svnaccessfile 的文件,编写内容如下:
[groups]
admin = zm
team1 = dev1,dev2

# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限,[/]代表根目录
[/]
* = r
@admin = rw
dangerman =

# 允许开发人员可以完全访问他们的项目版本库
[test:/]
@team1 = rw

配置SVN服务器
打开每个svn仓库的/conf/目录,打开svnserve.conf找到一下两句:

# [general]

# anon-access = none

# auth-access = write
# password-db = passwd

去之每行开头的#,anon-access = none 是匿名用户不能访问,必须要有用户名和密码。(注意:问题就出在这,一定要注意格式去掉注释后要顶格不能有空)

其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将

# [users]
# harry = harryssecret
# sally = sallyssecret

        这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户

配置authz文件

基于svnserve的服务器,权限文件authz配置的常见问题及解答 
 最近在我用Subversion论坛(http://www.iUseSVN.com/bbs)经常有人提到这样的问题:
为什么我的客户端没有写权限?
为什么我的权限没有起作用?

总结他们的配置,发现
都是用svnserve作为服务器,
都在svnserve.conf中使用了authz-db选项

原因可能如下:

1,配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
A:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于D:\svn\project1
使用以下命令启动svnserve
[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:\svn\project1
在这种情况下,一个svnserve只能为一个版本库工作
authz文件如果配置成下面这样就是错的,

[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
应该配置成

[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的URL:svn://192.168.0.1/ 即可访问project1

B:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于D:\svn\project1
如果使用以下命令启动svnserve

[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:\svn
这种情况,一个svnserve可以为多个版本库工作,
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样

[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1
这样的URL:svn://192.168.0.1/project2 即可访问project2

2,对中文目录进行权限控制时,没有将权限文件authz改为utf-8格式。

svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,
应该使用无BOM的utf-8格式,如何将默认的文件转为utf-8,
我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。在UltraEdit的配置中,可以设置有无BOM  

七、测试
重启apache,在IE里访问http://localhost:端口/svn/
看到创建的test资源库进行权限测试OK。如果出现无法访问错误,仔细检查一下,apache的conf文件里的location设置的路径后面是还少了/ ,或者NTFS目录权限的问题。

运行SVN服务器
运行SVN服务
在命令行执行

svnserve --daemon --root F:\lava\svn
服务启动,--daemon可简写为-d,--root可简写为-r,可以建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务(注意:这是临时打开的服务,命令执行后不能关闭窗口),或者在这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:

svnservice -install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice

用后台服务的方式可以设置开机自动执行。

D:\Program Files\Subversion\bin>sc create svnservice binpath= "d:\Program Files\

Subversion\bin\svnserve.exe --service -r F:\SVN"

就可以用net svnservice stop 或者start来启动服务了 也可以在Sevices.msc来启动了。

添加为系统服务
方法1(推荐):
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。
1.安装为服务:
例:我的Subversion安装在"D:\program files\Subversion",版本库在"D:\svn_root",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
请注意,因为便于察看,上面的命令分为多行,但在实际执行时应该在一行里。另外,在以前启动svnserve时会使用"-d"选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,"-i"和"-t"选项也不能使用。
另外还有两点需要小心处理。首先,如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\ program files\subversion\”中,则命令应该写为“binpath= "\"c:\program files\subversion\bin\svnserve.exe\"”(“”中的内容),整个命令如下,红色部分是改变部分:
sc create svnservice
binpath= "\"D:\ Program Files\Subversion\bin\svnserve.exe\" --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip
其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。
2.启动服务
在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行"net start svnservice"启动这个服务。
3.停止服务
然后使用"net stop svnservice"停止服务。
4.删除服务
如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行"sc delete svnservice","svnservice"就是我们创建服务时使用的名字。
5.配置服务是自动启动
默认情况下安装的服务不会随Windows的启动而启动,为了使svn服务能够随Windows启动而启动,需要修改一下"sc create"命令(首先要删除),增加"start= auto"选项:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
start= auto
当然你也可以使用图形化的工具修改服务的属性,你可以在“开始->运行...”中执行"services.msc",然后在界面中修改。
方法2:
建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务。
方法3:
这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:
svnservice --install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice
此文件会将SVN变成windows系统的一个服务,并默认为自启动,注意:执行第三句时确保前面以命令行方式运行的SVN服务已经停止,如果没停止可在其窗口中按Ctrl+C中止运行。

免责声明:文章转载自《SVN在Windows下安装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇遍历panel 上的控件,然后操作Sqlite数据库字符串处理函数replace下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP环境搭建

php环境分为两种:wanmplanmp PHP官网  w: windows 系统l: linux 系统a: apache 服务器n: nginx 服务器m: mysql 数据库p: php 服务器端的脚本语言 安装环境分为两种:集成环境 一键安装 集成环境 phpStudy wampserver apmserver xampp linux phpStu...

CENTOS7静默安装ORACLE11G及数据泵迁移

2021年2月4日江苏淮安特钢 CENTOS7静默安装ORACLE11G及数据泵迁移 作者:查小广(北京红河谷时代信息技术有限公司) 检化验系统LIMS 数据库迁移 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production lims数据库oracle:192.168.20....

MyBatis-使用XML或注解的简单实例

一.导入jar包 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</ver...

批量文件编码格式转化

前言   前段时间帮别人调试程序,在windows下能正常显示的输出,在linux下输出的全是乱码?后来发现windows默认的文件编码而是GB2312,而linux下的文件默认是utf-8,所以导致了这个问题。另一个问题就是用source insight看源码的问题,对windows下的文本文件都能看的中文源码注释,在si中居然是乱码,后来发现si居然不...

windbg是如何搜索符号文件的?

来个样例 我的符号目录设置是: 用我们在windows下调试必须用到的ntdll.dll模块来讲下windbg加载符号文件的过程。windbg加载符号文件时,会首先根据配置的符号目录信息,在本地符号目录中查找对应的符号文件。一个典型的搜索过程如下:F:Debug_SymbolSymbols32F:Debug_SymbolSymbols32pingme.tx...

Registry 类

提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。 继承层次结构 System.Object   Microsoft.Win32.Registry 命名空间:  Microsoft.Win32程序集:  mscorlib(在 mscorlib.dll 中) 方法...