windows下搭建svn服务端、客户端

1、安装SVN服务器subversion以及客户端TortoiseSVN,在网上下载windows版的subversion,TortoiseSVN并安装,比如我的服务端安装在了D:\Program Files\Subversion,客户端安装在了D:\Program Files\TortoiseSVN

   然后在命令行下运行svn命令:

C:\Users\Administrator>svn
使用“svn help”得到用法。

2、创建仓库,运行命令

C:\Documents and Settings\Administrator>svnadmin create D:\svn\myproject1

或用客户端创建仓库,用客户端创建数据库必须先新建对应的文件夹,比如我先在D盘下新建svn文件夹然后再在svn下新建myproject1,然后选中myproject1文件夹,点右键如图:

 

然后点击Create folder structure,这样也可以创建仓库

打开project文件夹,发现有如下文件,证明已经成功

3、启动SVN服务器,运行命令:

C:\Users\Administrator>svnserve -d -r D:\svn

可以通过svnserve --help 了解命令的含义 D:\svn 是指版本仓库

因为svn服务程序默认不是开机启动,所以每次使用时候都需要执行上述命令,所以需要为svn注册服务以便每次开机启动,执行如下命令:

C:\Users\Administrator>sc create svnserve binPath= "\"D:\Program Files\Subversion\bin\svnserve.exe\" --service --root D:\svn" displayname= 'svnservice"  depend=Tcpip start= auto

其中,sc是windows自带的服务配置程序,参数binPath表示svnserve可执行文件的安装路径,由于路径中的"Program Files"带有空格,因此整个路径需要用双引号引起来。而双引号本身是个特殊字符,需要进行转移,因此在路径前后的两个双引号都需要写成\"

    --service参数表示以windows服务的形式运行,--root指明svn repository的位置,service参数与root参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双 引号当中,而这对双引号不需要进行转义。

       displayname表示在windows服务列表中显示的名字, depend =Tcpip 表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。

    安装服务后,svnserve要等下次开机时才会自动运行。

也可以使用命令行启动、停止服务。

  启动服务: C:\net start svnservice SVNService 服务正在启动 . SVNService 服务已经启动成功。

  停止服务: C:\net stop svnservice SVNService 服务正在停止. SVNService 服务已成功停止。

  删除创建的服务 C:\sc delete svn svnservice。

5、测试svn,

  选中自己的工作目录,如“E:\myproject1”;右键选择“Svn CheckOut”菜单

  在弹出的CheckOut对话框中,选择url为“svn://[服务器IP地址]/myproject1”,然后点击OK

     如果可以checkout,则证明整个库配置完成。

6、配置用户

1>进入D:\svn\myproject1\conf目录,打开svnserve.conf文件,找到如下内容:

# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz

将上边内容注释去掉,并将anon-access = read改为anon-access = none(顶端不能留空)

去掉注释,表示不允许匿名访问
anon-access = none  

去掉注释,表示允许授权写访问
auth-access = write    

去掉注释,表示使用passwd配置文件来设置用户名和密码。
password-db = passwd

去掉注释,表示使用authz配置文件来设置权限分组管理。
authz-db = authz

2>编辑passwd 文件,配置用户名和密码,如:

[users]
# harry = harryssecret
# sally = sallyssecret
admin = lhm
user1 = 123
user3 = 123

"="左边是用户名 右边是密码

3> 编辑authz文件,配置权限分组,如:

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
#分两个组group_admin管理组,管理组成员admin group_user用户组,用户组成员user1,user3(这里的admin,user1,user3就是passwd里添加的用户) group_admin = admin group_user = user1,user2
#表示版本库里所有文件 [/]
#表示group_admin组下所有的成员都有读写权限 @group_admin = rw
#表示user1用户对myproject1项目有读写权限 [myproject1:/]
user1 = rw
#表示user3用户对myproject1项目下的trunk文件夹有读权限
[myproject1:/trunk]
user3 = r

当我们的仓库下不止有一个项目时,为了管理的方便,应该使用相同的认证和授权文件,如:

我在D:\svn 下在创建一个项目版本库,运行命令:

C:\Documents and Settings\Administrator>svnadmin create D:\svn\myproject2

这样在D:\svn下有两个目录myproject1和myproject2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db和authz-db文件。
password-db=..\..\passwd
authz-db=..\..\authz

这样,D:\svn\passwd和D:\svn\authz就控制了所有版本库的svnserve访问

关于windows下svn权限控制请参考:http://www.cnblogs.com/shlhm/p/3220530.html

 

posted @ 2013-07-28 00:26  标签  阅读(1543)  评论(0编辑  收藏  举报