`
ritcher
  • 浏览: 82331 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SVN SubVersion 配置

    博客分类:
  • svn
阅读更多

 

1 建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:

svnadmin create E:\svndemo\repository

就会在目录E:\svndemo\repository下创建一个版本库。

我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。


2 配置用户和权限

来到E:\svndemo\repository\conf目录,修改svnserve.conf:
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd 然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret

 

3 运行独立服务器

在任意目录下运行:
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。


4 初始化导入

来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:


右键->TortoiseSVN->Import...
URL of repository输入“svn://localhost/”
ok
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/”。

 

作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,同时为了叙述的清晰,我首先澄清一些概念。

1,认证(Authentication)和授权(Authorization)

这两个术语经常一起出现。其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“authz-db”文件,实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限,在Subversion 1.3之后,svnserve和Apache一样都可以使用“authz-db”文件。


2. svnserve下的配置文件

因为本文是以svnserve为例的,所以先介绍一下版本库目录的结构:

D:\SVNROOT\PROJECT1
├─conf
├─dav
├─db
│  ├─revprops
│  ├─revs
│  └─transactions
├─hooks
└─locks

其中conf下面有三个文件:

    authz
    passwd
    svnserve.conf

其中的“svnserve.conf”是这个版本库的配置文件,当使用svnserve时,这个配置文件决定了使用什么认证和授权文件:

    password-db = passwd
    authz-db = authz

上面的配置说明使用“svnserve.conf”同目录的passwd和authz,其中的password-db指定了用户密码文件,authz-db是我们的授权文件,也就是我们本文主要介绍的文件。

注意:使用Apache作为服务器时,根本就不会参考“svnserve.conf”文件的内容,而是会参考Apache的配置。


3,基于svnserve的版本库文件布局

使用svnserve时,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-db和authz-db文件。下面是一个多版本库的目录:
D:\SVNROOT
├─project1
│  ├─conf
│  ├─dav
│  ├─db
│  │  ├─revprops
│  │  ├─revs
│  │  └─transactions
│  ├─hooks
│  └─locks
└─project2
    ├─conf
    ├─dav
    ├─db
    │  ├─revprops
    │  ├─revs
    │  └─transactions
    ├─hooks
    └─locks
   
D:\SVNROOT下有两个目录project1和project2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db和authz-db文件。

password-db = ..\..\passwd
authz-db = ..\..\authz

这样,D:\SVNROOT\passwd和D:\SVNROOT\authz就控制了所有版本库的svnserve访问。另外在后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。

注意:还有一点需要注意,那就是svnserve的“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存

4,测试用户和组说明

版本库禁止任何匿名用户的访问,只对认证用户有效。

root:配置管理管理员,对版本库有完全的管理权限。

p1_admin1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1:project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。

p2_admin1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1:project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。


对应的组及组的用户:
p1_group_a:p1_admin1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_admin1
p2_group_d:p2_d1
p2_group_t:p2_t1


5,修改D:\SVNROOT\passwd文件

前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:

[users]
p1_admin1 = p1_admin1
p1_d1 = p1_d1
p1_t1 = p1_t1
         
p2_admin1 = p2_admin1
p2_d1 = p2_d1
p2_t1 = p2_t1

为了便于验证,所有密码和用户名一致,如果你使用的是其他认证方式,这一步可能不同,但是用户名应该都是一样的。

6,配置授权,修改D:\SVNROOT\authz

[groups]
# 定义组信息

p1_group_a = p1_admin1
p1_group_d = p1_d1
p1_group_t = p1_t1

p2_group_a = p2_admin1
p2_group_d = p2_d1
p2_group_t = p2_t1


[/]
# 指定所有的版本库默认只读,root可读写
* = r
root = rw


[project1:/]
# 指定对版本库project1根目录的权限
@p1_group_a = rw
@p1_group_d = rw
@p1_group_t = r

[project1:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限,
# p1_group_a读写,p1_group_d和p1_group_t没有任何权限。
@p1_group_a = rw
@p1_group_d =
@p1_group_t =

 

[project2:/]
# 指定对版本库project2根目录的权限
@p2_group_a = rw
@p2_group_d = rw
@p2_group_t = r

[project2:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限
@p2_group_a = rw
@p2_group_d =
@p2_group_t =


经过以上设置以后,你会发现一些有趣的事情。当使用用户“p1_d1”,检出project1的trunk时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。

关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。

再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制

分享到:
评论

相关推荐

    SVN SubVersion

    **SVN SubVersion**,全称为Subversion,是一款开源的版本控制系统,被广泛应用于软件开发领域,用以管理和跟踪项目中的文件和目录变更。Subversion的设计理念是为团队协作提供一个可靠的版本化文件存储系统,使得...

    svn subversion-1.7.2

    Subversion(SVN)是一个开源的版本控制系统,用于管理对软件项目源代码的更改。它在软件开发领域中广泛使用,特别是在多人协作的环境中,帮助团队成员协同工作,跟踪文件的修改历史,以及解决合并冲突等问题。...

    SVN Subversion TortoiseSVN AnkhSvn 1.8 全套

    在使用这套SVN Subversion TortoiseSVN AnkhSvn 1.8全套时,你需要了解如何安装和配置这些组件,以及如何有效地使用它们进行版本控制。例如,如何创建新的SVN仓库,如何连接到已有的仓库,如何检出项目,如何提交...

    SVNManager配置详细说明文档

    SVNManager 配置详细说明文档 SVNManager 是一个基于 Web 的 SVN 管理软件,旨在提供一个统一的平台 для管理 SVN 仓库和控制访问权限。该软件基于 SVN 核心,结合 Apache 和 PHP,提供了一个完整的 SVN 管理解决...

    svn(subversion)服务器、客户端安装包及配置说明

    本人亲测win7 xp 可用如有问题可联系我qq1173456265

    svn 安装 配置 CollabNetSubversion

    标题 "svn 安装配置 CollabNet Subversion" 涉及的是在计算机环境中安装和配置 CollabNet Subversion(简称 SVN),这是一个流行的版本控制系统,用于管理软件开发过程中的源代码和其他文件。CollabNet Subversion ...

    SVN安装配置手册

    - **SVN服务器**:SVN(Subversion)是一种分布式版本控制系统,用于管理软件开发中的源代码版本控制。安装SVN服务器可以让团队成员通过网络共享代码库,并且能够追踪每一次的更改历史。 - **SVN客户端**:除了...

    SVN详细配置和使用

    本文档将详细介绍Subversion (SVN) 的配置及使用方法,并结合具体的场景来阐述其重要性。 ##### 开发中的实际问题 1. **备份需求**:面对硬盘故障或数据丢失等问题,开发团队迫切需要一种有效的备份机制。 2. **...

    SVN远程配置说明文档

    SVN远程配置说明文档 本文档旨在帮助用户配置SVN远程连接,以便于在家工作更加方便。SVN(Subversion)是一个自由/开放源码的版本控制系统,可以管理随时间改变的文件,并将其放在一个中央仓库中,使得用户可以恢复...

    SVN安装配置教程(带视频教程)

    SVN,全称为Subversion,是一款广泛应用于软件开发领域的版本控制系统。它允许团队成员协同工作,跟踪代码更改,便于代码管理、回溯和合并。在本教程中,我们将深入探讨SVN的安装、配置以及基本操作,以帮助你更好地...

    svn_subversion

    Subversion(简称SVN)就是这样一款广泛应用的集中式版本控制系统。本文将详细介绍如何在Ubuntu操作系统上安装并配置Subversion,以实现有效的代码管理。 首先,我们来了解"svn_subversion"这个主题。"svn"代表...

    SVN属性配置:必须输入日志/日志模版

    标题中的“SVN属性配置:必须输入日志/日志模版”指的是在使用Subversion(SVN)版本控制系统时,对于提交操作的一个规范设置。SVN允许用户为每个文件或目录设置特定的属性,这些属性可以控制提交行为,比如强制用户...

    subversion svn配置说明

    Subversion (简称 SVN) 是一个开源的版本控制系统,用于跟踪文件和目录的变更,以便团队协作和项目管理。本文将详细介绍如何配置Subversion,包括安装、建立Repository以及使用客户端工具。 1. **安装Subversion** ...

    PHP100-94 SVN (Subversion) 配置与安装调试视频教程

    SVN (Subversion) 配置与安装调试视频教程,很详细,写的不错,看完之后,一下就能搞明白

    svn服务器配置教程

    【Subversion(简称svn)服务器配置教程】 Subversion是一个开源的版本控制系统,用于跟踪文件和目录的更改,便于多人协作开发。本教程将指导你如何在Windows环境下配置一个基本的svn服务器,包括软件下载、安装、...

    使用Subversion进行版本控制(针对 Subversion 1.4)

    Subversion 命令行客户端:svn svn选项 svn子命令 svnadmin svnadmin选项 svnadmin子命令 svnlook svnlook选项 svnlook子命令 svnsync svnsync选项 svnsync子命令 svnserve svnserve选项 svnversion mod_dav_...

    svn服务器配置教程全

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的历史版本。在本教程中,我们将深入探讨如何配置一个完整的SVN服务器,包括安装、配置、创建仓库以及用户权限管理。 首先,...

Global site tag (gtag.js) - Google Analytics