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

左手的ㄟ右手 2022-08-24 14:25 425阅读 0赞

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

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

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

2、创建仓库,运行命令

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

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

![Image 1][]

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

![Image 1][]

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

![Image 1][]

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

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

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

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

  1. 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的路径一起被包含在一对双 引号当中,而这对双引号不需要进行转义。

  1. 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

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

![Image 1][]

![Image 1][]

6、配置用户

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

  1. # anon-access = read
  2. # auth-access = write
  3. # password-db = passwd
  4. # authz-db = authz

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

复制代码

  1. 去掉注释,表示不允许匿名访问
  2. anon-access = none
  3. 去掉注释,表示允许授权写访问
  4. auth-access = write
  5. 去掉注释,表示使用passwd配置文件来设置用户名和密码。
  6. password-db = passwd
  7. 去掉注释,表示使用authz配置文件来设置权限分组管理。
  8. authz-db = authz

复制代码

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

  1. [users]
  2. # harry = harryssecret
  3. # sally = sallyssecret
  4. admin = lhm
  5. user1 = 123
  6. user3 = 123

“=”左边是用户名 右边是密码

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

复制代码

  1. [aliases]
  2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
  3. [groups]
  4. # harry_and_sally = harry,sally
  5. # harry_sally_and_joe = harry,sally,&joe
  6. # [/foo/bar]
  7. # harry = rw
  8. # &joe = r
  9. # * =
  10. # [repository:/baz/fuz]
  11. # @harry_and_sally = rw
  12. # * = r
  13. #分两个组group_admin管理组,管理组成员admin group_user用户组,用户组成员user1,user3(这里的admin,user1,user3就是passwd里添加的用户)
  14. group_admin = admin
  15. group_user = user1,user2
  16. #表示版本库里所有文件
  17. [/]
  18. #表示group_admin组下所有的成员都有读写权限
  19. @group_admin = rw
  20. #表示user1用户对myproject1项目有读写权限
  21. [myproject1:/]
  22. user1 = rw
  23. #表示user3用户对myproject1项目下的trunk文件夹有读权限
  24. [myproject1:/trunk]
  25. user3 = r

复制代码

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

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

  1. 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

![Image 1][]

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

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

每一个程序猿都有一个金刚梦

[Image 1]:

发表评论

表情:
评论列表 (有 0 条评论,425人围观)

还没有评论,来说两句吧...

相关阅读