SVN权限控制
- 格式:doc
- 大小:40.50 KB
- 文档页数:7
Win7 系统搭建SVN 服务端和客户端图文使用方法1、安装好VisualSVN Server后,运行VisualSVN Server Manger,打开服务器的 VisualSVN 界面:2、创建仓库(repository)第一种方式:按照上图,创建新的代码库,在下图所示的文本框中输入代码名称:上图中选择“empty repostory”,则在代码库只创建空的代码库StartKit,选下面的“single-project”则在代码库StartKit下面会创建trunk、branches、tags三个子目录;3种仓库默认推荐权限设置(Nobody…不允许任何人访问All Subversion users…所有svn用户都可以Customize permissions自定义权限允许,这里下面有个按钮,我们可以过会继续设置,当然你也可以在这里设置,然后点create创建)这里有个Repository URL这个地址就是客户端获取服务器代码的地址,你可以先记下来,也可以通过右击仓库名可以获得。
前面的WIN-TV..什么的是你计算机的名字,客户端都是服务器的ip地址就行了这就是标准的branches,tags,trunk服务器版本我们现在右击整个仓库,就是MyBlog项目,我们现在来创建一个admin管理员,用户名admin,密码admin,你可以在Users查找到他,可直接修改密码点击“OK”创建完代码库后,没有任何内容在里面。
我会在这个教程的第二部分说明如何迁入源代码。
下面,我们开始安全性设置,在左侧的Users上点击右键:输入上面的信息,点击OK,我们就创建一个用户了。
按照上面的过程,分别添加用户Developer1、tester1、manager1,好了,我们开始添加这些用户到我们刚才创建的项目里:点击上图中的"Add..."按钮,在下图中选择我们刚才添加的用户,点击OK按钮:说明:大家可能注意到了下图中的Groups,是的,你也可以先创建组,把用户添加到各个组中,然后对组进行授权,操作比较简单,在此略过。
Win7 系统搭建SVN 服务端和客户端图文使用方法1、安装好VisualSV N Server后,运行VisualSVN Server Manger,打开服务器的Visual SVN 界面:2、创建仓库(reposi tory)第一种方式:按照上图,创建新的代码库,在下图所示的文本框中输入代码名称:上图中选择“e mptyrepost ory”,则在代码库只创建空的代码库Sta rtKit,选下面的“singl e-projec t”则在代码库S t artK it下面会创建tru nk、branch es、tags三个子目录;3种仓库默认推荐权限设置(Nobody…不允许任何人访问All Subver sionusers…所有svn用户都可以Custom ize permis sions自定义权限允许,这里下面有个按钮,我们可以过会继续设置,当然你也可以在这里设置,然后点cre ate创建)这里有个Re posit ory URL这个地址就是客户端获取服务器代码的地址,你可以先记下来,也可以通过右击仓库名可以获得。
前面的WIN-TV..什么的是你计算机的名字,客户端都是服务器的ip地址就行了这就是标准的b ranc hes,tags,trunk服务器版本我们现在右击整个仓库,就是MyBl og项目,我们现在来创建一个ad min管理员,用户名adm in,密码admi n,你可以在Us ers查找到他,可直接修改密码点击“OK”创建完代码库后,没有任何内容在里面。
我会在这个教程的第二部分说明如何迁入源代码。
下面,我们开始安全性设置,在左侧的Us ers上点击右键:输入上面的信息,点击OK,我们就创建一个用户了。
关键词:s version, 安装配置, 权限, 目录访问1 前言2 基本概念2.1 什么是版本控制2.2 什么是 S version2.3 版本库(repository)3 安装配置3.1 安装独立服务器 SVNServer3.2 安装 ApacheSVN 服务器4 FAQ5 参考资料1、前言花了72小时,终于把 S version 初步掌握了。
从一个连―什么是版本控制‖都不知道的门外汉,到配置出精确至每目录访问的入门者,中间还卡了一天时间。
其中费了许多气力,摸索实验了多次,还差点放弃了,但是收获是巨大的。
现把我的配置和学习过程写下来,供大家参考,也让初学者少走弯路。
以下仅以 Windows 平台为例讲解,Unix/Linux 平台请参考相关资料。
如其中有谬误的地方,包括错别字,请联系我修订。
技术在分享中进步!2、基本概念2.1、什么是版本控制简单点来说,版本控制就是数据仓库,它可以记录你对文件的每次更改。
这样,就算你在昏天黑地的改了几个月后老板说不要了,还是按照过去那样,你也不会抓狂,简单的恢复版本操作就搞定一切。
2.2、什么是 S versionS version是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。
一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。
从这个方面看,许多人把版本控制系统当作一种―时间机器‖。
S version可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。
一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。
进展可能非常的迅速,并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。
一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。
Visual SVN的权限配置是在SVN_ROOT根目录下面的三个文件内1)authz:Visual SVN账户权限配置;2)authz-windows:如果使用Windows域账户,权限配置在此文件配置;3)htpasswd:账户名及密码;注:SVN正常是在每个版本库内都有单独的权限配置文件,如project、office、public等目录内都会有单独的权限配置文件,而VisualSVN将所有版本库的权限配置集中到了根目录下面。
相对配置更加简单。
我们目前使用以下两种方式进行权限的设置:1、Visual SVN图形化控制界面在该界面可以实现如下功能:1)新建用户user;2)新建组Group并添加用户user;3)配置用户user或组group对产品库如Project、Office、Public的访问权限;2、手动修改authz文件进行权限配置,但是需要注意以下几点:1)authz文件为“UTF-8 无BOM”格式,在使用记事本打开修改保存之后需要注意避免修改格式。
建议使用UltraEdit进行修改并且保存为“UTF-8 无BOM”格式。
2)authz文件目前测试发现将其中Windows2008中Copy到XP系统内本身就会发生变化,如38k大小的文件会变成48k,在将xp内的authz不做任何修改copy会SVN_ROOT 中时,VisualSVN打开时依然会提示“……\authz:1: Section header expected”错误。
由此可见在Copy到XP时文件已经发生了修改。
具体原因不详,目前直接在windows2008 server当中进行修订并保存为“UTF-8无BOM”格式,验证OK。
验证Copy到windows7 64bits中没有文件大小无变化。
王新2014年5月4日。
SVN在Windows下的权限分配修订记录日期修订版本修改章节修改描述作者2008-10-20 1.0 匿名权限分配睢攸岚2008-11-9 2.0 用户权限分配郝阔君、乔良一、 使用说明本文档的目的是指导SVN(Subversion)初学者,可以通过使用SVN来进行版本控制和人员权限分配。
阅读完本文档你将有如下收获:¾熟悉SVN服务器端的权限分配;¾熟悉SVN客户端的版本回溯;二、 阅读前的准备本示例使用的SVN服务器版本号为[Subversion-1.4.5],使用的的客户端版本号为[TortoiseSVN 1.4.7],本示例不指导服务器端和客户端的安装,如果您想了解权限分配部分请确保您至少安装了SVN服务器端,如果您想了解版本回溯部分请确保您至少安装了SVN客户端。
下面开始正式介绍。
三、 创建SVN仓库创建一个空文件夹,取名svnroot(仓库名,自己任意取),右键文件夹选择[Create repository here…],如下图所示:单击确定后会出现如下图选择创建数据库类型对话框,选择默认的[FSFS]本地文件系统即可,单击确定提示您创建成功:下面创建一个启动服务的批处理文件,文件内容如下图所示,双击运行该批处理文件后,相应的仓库即启动服务:至此,您已经成功创建了本地SVN仓库,只要启动服务,别人就可以通过您的仓库进行相关操作。
四、 SVN的版本回溯功能首先你需要在客户端创建一个连接仓库的本地文件夹,利用Checkout下载服务器上你有权限操作的内容,然后如下图所示操作:在下图所示地方填入您要回滚得版本号,单击OK即可:五、 匿名用户权限分配首先进入你的仓库目录下面的[../conf]文件夹下面,你会看到如图所示三个文件,其中的[svnserve.conf]存储普通的配置信息,[passwd]存储所有的授权用户的用户名和密码信息,[author]存储用户权限信息。
svn安装及权限配置SVN安装及权限配置安装(svn://…访问方式的安装部署)1.安装svn-1.4.5-setup.exe2.将SVNService.exe拷贝到\Subversion\bin下,双击安装。
启动服务。
部署1.创建SVN仓库现在svn的目的位置上,创建相应文件夹,例如:E:/svnroot,然后开始→运行→cmd→输入命令:svnservice -install -d -r E:/svnroot2.启动svnservice服务3.创建项目仓库在svn仓库下创建项目的相应文件夹,例如:E:/svnroot/project1,然后开始→运行→cmd→输入命令:svnadmin create E:/svnroot/project1。
这时,在E:/svnroot/project1会出现conf、dav 等文件夹和文件。
4.有多个项目时,重复步骤3。
权限配置1.修改每个项目中的conf文件夹下的svnserve.conf文件:anon-access = noneauth-access = writepassword-db = ../../passwdauthz-db = ../../authz添加以上项目。
其中,../../passwd表示,向上两级文件夹下的passwd文件。
这样做的目的是,将所有项目的权限放在一个文件中控制。
2.设置加密和权限文件位置将其中一个文件夹下的passwd文件和authz文件拷贝到svnroot下,与每个项目的文件夹平行。
3.设置svn密码,修改passwd文件在【users】下添加用户名及密码,格式如下:用户名= 密码,例如:harry = harrysecret每个用户单独占一行,密码后不用添加任何分隔符号。
4.设置svn权限,修改authz文件:设置【groups】:按照一种规则,将所有人员分组,例如可以按照对每个项目、每个项目的不同权限进行分组,人员之间用逗号分隔,每个组单独占一行,结尾不需要任何分隔符号。
版本控制工具SVN权限设置宝典1 背景假设厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计、销售,并在北京、上海各设立了一个办事处。
对于工作日志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性,要看以前的日志必须一封一封邮件去查看,很麻烦。
于是就想到利用Subversion,让员工在自己电脑上编辑日志,然后利用svn传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一下svn update 即可,比发送邮件还要简单的多。
*svn服务器相关信息o 服务器地址:192.168.0.1o 服务器OS:MS Windows 2000 Server Edition 中文版o 代码库本地目录:D:\svn\arm*arm部门文档的目录结构如下:arm 部门名称├─diary 工作日志目录│ ├─headquarters 总部工作日志目录│ ├─beijing 北京办日志目录│ └─shanghai 上海办日志目录├─ref 公司公共文件参考目录└─temp 临时文件目录*人员情况o morson,公司总经理,其实他不必亲自看任何东西,就连部门经理们的每周总结都不一定看。
但是为了表示对他的尊敬,以及满足一下他的权力欲,还是给他开放了“阅读所有文档”的权限o michael,arm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他相处来的主意o scofield,北京办人员,老员工,为人油滑难管o lincon,上海办人员,老员工,大老实人一个o linda,总部协调员、秘书,文笔不错,长得也不错o rory,单片机技术员,技术支持*访问权限需求分析o 允许总经理读取所有文件o 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志o 不允许匿名访问o ref目录只允许经理和秘书写,对其他人只读o temp目录人人都可以写2 建立代码库在服务器D:\svn 目录下,建立arm 代码库,命令如下: D:\svn>svnadmin create arm在客户机F:\temp 目录下,建立好上述目录结构用命令F:\temp>svnimportarmsvn://192.168.0.1/arm 导入结构【注意点:关于导入时候的细微差别】3 编辑代码库基础配置文件编辑代码库arm\conf\svnserve.conf 文件,如下:[general]password-db = passwd.confanon-access = noneauth-access = writeauthz-db = authz.conf4 管理用户帐号新建代码库arm\conf\passwd.conf 文件,如下:[users]morson = ShowMeTheMoneymichael = mysecretpasswordscofield = hellolittilekillerlincon = asyouknows111rory = 8809117linda = IlikeWorldCup20065 建立目录访问权限控制文件新建代码库arm\conf\authz.conf 文件,内容如下: [groups]g_vip = morsong_manager = michaelg_beijing = scofieldg_shanghai = lincong_headquarters = rory, lindag_docs = linda[arm:/]@g_manager = rw* = r[arm:/diary/headquarters]@g_manager = rw@g_headquarters = rw@g_vip = r* =[arm:/diary/beijing]@g_manager = rw@g_beijing = rw@g_vip = r* =[arm:/diary/shanghai]@g_manager = rw@g_shanghai = rw@g_vip = r* =[arm:/ref]@g_manager = rw@g_docs = rw* = r[arm:/temp]* = rw6 测试在服务器上,打开一个DOS Prompt 窗口,输入如下指令:svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117 我们应该得到如下目录结构:arm├─diary│ └─headquarters├─ref└─temp然后修改ref目录下任意文件并提交,服务器将会报错“Access deni”深入本章将详细介绍前一章所涉及的两个配置文件,svnserve.conf 和authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义。
SVN权限控制版本控制是软件开发过程中一个非常重要的环节,而SVN (Subversion)作为一个集中式版本控制系统,可以帮助团队协同开发、管理代码仓库等。
在SVN中,权限控制是一项重要的功能,它可以有效地保护代码的安全性和保密性。
本文将详细介绍SVN权限控制的原理和使用方法。
一、SVN权限控制原理SVN权限控制是基于访问控制的原理实现的。
在SVN中,每个用户都被分配了一个唯一的用户名,而每个仓库也有一个唯一的URL。
通过在服务器端设置用户和仓库之间的权限关系,可以控制用户对仓库中文件和目录的访问权限。
二、SVN权限控制的对象1. 仓库:SVN权限控制的最基本单位,一个仓库可以包含多个项目。
在仓库的管理界面中,可以设置用户对仓库的访问权限,如读取权限、写入权限等。
2. 目录:SVN中的目录是代码库的组织单位,可以包含文件和子目录。
通过设置目录的权限,可以控制用户对目录中内容的访问权限。
三、SVN权限控制的方式1. 基于用户:SVN允许为每个用户单独设置权限。
通过在仓库管理界面添加用户并分配相应的读写权限,可以实现对用户的精细控制。
2. 基于组:SVN还支持将用户分组,然后针对组进行权限设置。
这样可以简化权限管理,当有多个用户需要相同的权限时,只需要将这些用户添加到同一个组即可。
3. 基于路径:除了可以控制用户或组的权限外,SVN还支持对特定路径设置不同的权限。
这样可以根据实际需求,对不同的目录或文件进行灵活的权限控制。
四、SVN权限控制的步骤1. 创建用户或组:首先需要在SVN服务器上创建用户或组。
可以通过相关命令或者使用可视化界面工具进行操作。
2. 分配权限:在仓库管理界面上,将用户或组与仓库进行关联,并设置相应的权限。
可以根据实际需求设置读写权限、删除权限、修改权限等。
3. 客户端验证:在客户端使用SVN时,需要输入正确的用户名和密码来验证身份。
只有通过身份验证,才能对仓库进行相应的操作。
Svnserve单项目权限设置目录Svnserve单项目权限设置 (1)目录 (1)前言 (1)一项目结构 (2)二建立版本库 (4)三配置权限 (4)四导入项目版本库 (9)五启动svnserve (13)六将svnserve设置为系统服务 (14)1,安装svnservice (14)2,删除服务 (15)3,配置服务是自动启动 (15)致谢 (16)前言目前网络上有很多的关于svn安装与权限设置的文章(基于SVN自带的svnserve),但是如果您像我一样按照那些文章来进行我们的subversion的安装和设置会发现有很多问题,可以说每篇文章都有这样或那样的错误。
或者断章取义,或者根本就没亲自验证就写出来,贴到网络上,然后又有很多人直接转帖到自己的博客,空间中。
这就造成了网络上大量的权限设置文章根本是无法正确设置权限的。
在学习那些“权限设置精细”文章的过程中,给我们的身心都造成了严重的伤害。
至少给我幼小的心灵造成了创伤。
每次上网搜到一篇文章都觉得这次总该可以了吧,结果全盘照抄了,还是不行。
累的我真的想放弃了。
还好后来有一篇文章给了我启发,那是我找过的唯一一篇有我需要的细节的文章。
这篇文章是专门写给像我一样的菜鸟,而又因为这样或那样的原因需要了解svnserve权限设置的人,也就是“侏儒”。
如果您对windows 比较了解,也就是身高在1.5米以上的,偏矮的人,正常人,比较高的人,非常高的人,或者像姚明一样的巨人的话,那你会发现此篇文章极尽啰嗦,繁琐。
对此我深表歉意!一项目结构亿联网络技术有限公司是一家专注于网络通讯产品的研发及销售的高科技企业。
目前,公司主要致力于V oIP网关、V oIP终端、WIFI 和IP-PBX等网络通讯产品的开发、生产和销售。
产品以出口为导向,95%产品远销英国、德国、美国、韩国等50多个国家与地区,拥有一批诸如Nortel、FranceTelecom, Skype等优质合作伙伴资料库的目录结构如下:ref 项目名称├─department 存放每个部门资料│ ├─hardware 硬件资料目录│ ├─embedded 嵌入式资料目录│ └─PC PC软件资料目录├─com 研发部均可读的公共资料└─temp 临时文件人员情况与权限需求分析:Stonelu,公司副总,研发中心最大的“官”,毫无疑问当然需要访问所有的目录了,虽然可能他不太有时间查看那些个资料,但是权限还是得给人家设在那的嘛,谁叫人家是老大呢。
因为刚来一个新公司,公司里面svn用的不熟练,对权限这块管理的不是很严密,现在又要做配置库迁移,所以就做个权限测试总结,之前在网上看到很多重复的svn权限配置的文章,都感觉千篇一律,刚开始接触svn的人看着还有点绕,其实自己懂了svn权限的关键点,然后逐步尝试,这样的话效果会更好,下面就是我的实际操作,分享给大家,也给自己做个总结。
备注:本次测试的服务器是用的CollabNet Subversion Edge,客户端用的TortoiseSVN;测试过程分析:一.测试单独用户权限,不存在组的信息:测试一:svn_auth_file--用户文件配置内容:admin:$apr1$ExUVYcIZ$6HFRPa9ZFwrmj5krzW.ip0zhangshan:$apr1$N1nt8KdS$HAm0io/5OTIHKxI.D47NP1zhaoliu: zhaoliu说明:admin是登录http://192.168.0.240:3343/csvn/,系统自动生成的默认用户;zhangshan是在界面“用户--用户列表”中创建的;zhaoliu是在服务器端直接编辑svn_auth_file文件添加的;svn_access_file--权限文件配置内容:[/]* =admin = rw[LTest:/]zhaoliu = rw权限文件解析:[/]代表对所有仓库的权限也是根目录的意思;*= 代表所有人无任何权利,等后面再一步一步对人逐个设置权限;admin=rw 表示admin用户具备根目录下的读写权限;[LTest:/]表示仓库"LTest" 的访问权限;zhaoliu = rw 表示zhaoliu这个用户对LTest库下所有的内容有读写权限;测试结果:用admin和zhaoliu的账号可以检出LTest库,zhangshan不可以;用admin和zhaoliu的账号可以只检出LTest/document目录,zhangshan不可以;测试二:svn_auth_file--用户文件不变svn_access_file--权限文件修改为配置内容:[/]* =admin = rw[LTest:/]zhaoliu = rw[LTest:/document]zhaoliu = rzhangshan = rw测试结果:前一次的结果admin和zhaoliu的账号权限仍然有效;用zhangshan的账号不能检出LTest库,可以直接检出LTest/document目录,且可以对文件进行读写操作;测试三:svn_auth_file--用户文件不变svn_access_file--权限文件修改为配置内容:[/]* =admin = rw[LTest:/]liting = rw[LTest:/document]liting = rzhangshan = rw[LTest:/old]zhangshan = rw* =测试结果:1)前一次的结果admin和zhaoliu,zhangshan的账号权限仍然有效;2)用zhangshan的账号不能检出LTest库,可以直接检出LTest/old目录,且可以对文件进行读写操作;3)用zhaoliu的账号不能直接检出LTest/old目录,但是由于在[LTest:/]下zhaoliu是有读写权限的,所以在直接检出LTest时,只能检出document,在此继承[LTest:/document]的权限只能读不能修改文件;二.测试用户组权限:测试一:svn_auth_file--用户文件配置内容:admin:$apr1$ExUVYcIZ$6HFRPa9ZFwrmj5krzW.ip0zhangshan:$apr1$N1nt8KdS$HAm0io/5OTIHKxI.D47NP1zhaoliu: zhaoliuwangwu:wangwulishi:lishi说明:admin是登录http://localhost:3343/csvn/,系统自动生成的默认用户;zhangshan是在界面“用户--用户列表”中创建的;zhaoliu,wangwu,lishi是在服务器端直接编辑svn_auth_file 文件添加的;svn_access_file--权限文件配置内容:[groups]admin = admin, zhaoliudevelopers = zhangshan,wangwumanager = lishi[/]* =@admin = rw[LTest:/]@developers = r@manager = rw测试结果:用户组@admin,@manager可以检出LTest库且可以修改文件,@develop只能检出文件浏览,不能进行操作;测试二:增加内容:[LTest:/document]@developers = rwzhaoliu = r* =测试结果:1)用户组@developers可以检出整个LTest库,对document目录可读写,对old目录只读;2)用户zhaoliu,首先继承@admin用户组对根目录[/]下所有配置库的读写权限,其次遵守对LTest/document目录的只读权限,所以最后是可以检出整个LTest库,对document目录可读,对old 目录可读写;三.测试含有中文的文件夹权限设置svn_access_file--权限文件新增[TestChinaNameFolder:/]@manager = r@developers = r[TestChinaNameFolder:/00项目管理]@manager = rw* =[TestChinaNameFolder:/01用户需求]@developers = rw* =测试结果:1)用户组@admin继承根目录的读写权限,且TestChinaNameFolder库下的00和01两个子目录都设置了除某固定组外其他无法访问,@admin最终只能看到或checkout出除00和01以外的目录;2)用户组@manager继承[TestChinaNameFolder:/]库的只读权限,且在子目录00下拥有读写权限,且01设置固定组外其他无法访问,@manager最终对TestChinaNameFolder库下00子目录有读权限,无法看到01子目录;3)用户组@developers继承[TestChinaNameFolder:/]库的只读权限,且在子目录01下拥有读写权限,且00设置固定组外其他无法访问,@developers最终对TestChinaNameFolder库下01子目录有读权限,无法看到00子目录;svn权限设置总结:总的规则:svn权限是以文件夹作为区分的,svn权限有继承性,但是只以当前位置的权限为使用权限(可以在测试中看出);详细分析:1)[/]配置库根目录允许只有管理员有读写权限;2)[Repository:/]配置库目录的权限会影响用户对此配置库下所有子文件夹的权限;但是某个子文件夹的权限,只对具体设置的某个组或用户有效,若有* = ,则其他用户无法看到此文件夹,若无* = ,则其他用户的权限会继承上层权限,若上层权限没有则此处也没有;比如:在“单个用户权限测试”测试三中,用户liting对LTest整个库有读写权限,但是对库下面的doucument 文件夹只有只读权限,那就只能浏览文件,不能对文件进行修改删除;她对库下面的old文件夹没有权限,在执行检出命令时,也就不会检出old文件夹;3)* = 在子文件夹中谨慎使用,如果在子文件夹中设置了此权限,就表示设置权限的这个目录除了已有用户对此有对应权限外,其他用户是看不到此目录的,像隐藏起来了;比如:在“用户组权限测试”测试二中,用户组@manager和@admin继承测试一中的群组权限,对LTest 配置库有读写权限,但是对于在测试二中的设置,除了用户组@developer能直接检出document且可进行读写外,其他用户组,不能直接检出该目录,且在LTest根目录下检出的内容只有old目录,没有document;4)在设置权限时候,一般[/]根目录给svn管理员开放读写权限,其他设置无权限;对于具体的配置库,针对于相关的用户组设置读写,对于配置库的子目录不需要看到的用户组使用* = 控制;5)在具体配置库下面拥有只读或者读写权限的用户或组,若某子目录中设置* = 且未给此用户或组设置只读或读写权限,则在浏览或checkout配置库时该用户或组看不到此子目录;6)在配置svn权限的时候,需要考虑到子目录对上层目录权限的继承性,这样才能精确的配置好权限;7)如果svn配置库结构有涉及到中文的,必须把权限文件的字符编码转换成UTF-8,权限才会生效:具体方法:用UE打开权限文件,选择“文件--另存为--格式--UTF-8 无BOM”,就可以了;。
SVN管理规范引言概述SVN(Subversion)是一种版本控制系统,用于管理软件开发过程中的代码版本。
在团队协作开发中,SVN的管理规范对于保证代码的稳定性和可追溯性非常重要。
本文将介绍SVN管理规范的具体内容和实施方法。
一、代码库管理1.1 确定代码库的结构:根据项目的特点和需求,确定代码库的结构,包括项目目录结构、分支和标签的管理方式等。
1.2 设定权限控制:根据团队成员的角色和职责,设定不同的权限控制,确保只有具有相应权限的人员才能进行代码的提交和修改。
1.3 定期清理无用代码:定期清理代码库中的无用代码和过期分支,保持代码库的整洁和高效。
二、分支管理2.1 制定分支策略:确定分支的创建和合并策略,包括主干分支、开发分支、发布分支等,确保代码的流程清晰和合并无冲突。
2.2 命名规范:统一分支的命名规范,包括分支类型、功能、版本号等信息,方便团队成员理解和管理。
2.3 定期合并分支:定期合并开发分支和主干分支,确保代码的同步和一致性。
三、提交规范3.1 提交信息规范:每次提交代码时,必须填写清晰明了的提交信息,包括修改内容、原因和影响等信息。
3.2 避免大规模提交:避免一次性提交大量代码,应该分批次提交,便于代码审查和追溯。
3.3 定期更新代码:团队成员应该定期更新代码,确保本地代码和代码库的同步。
四、冲突解决4.1 及时解决冲突:当出现代码冲突时,应该及时解决,避免影响其他团队成员的工作。
4.2 沟通协调:在解决代码冲突时,应该及时与相关团队成员沟通协调,确保解决方案的有效性。
4.3 记录冲突处理过程:在解决代码冲突的过程中,应该详细记录解决方案和原因,以便日后参考和总结经验。
五、安全备份5.1 定期备份代码库:定期对代码库进行备份,确保代码的安全性和可恢复性。
5.2 多地备份:将代码库备份到不同地点,避免因灾害等意外事件导致代码丢失。
5.3 定期测试备份:定期测试代码库的备份数据,确保备份的完整性和可用性。
SVN权限配置详解SVN权限详细配置本章将详细介绍SVN权限配置涉及的两个配置⽂件, svnserve.conf 和 authz.conf,通过对配置逐⾏的描述,来阐明其中的⼀些细节含义。
除此之外的其他配置、安装等内容,不是本⽂重点,读者若有什么疑问,请参考后⾯“参考⽂献”中列出的⼀些⽂档。
这⾥⾸先要注意⼀点,任何配置⽂件的有效配置⾏,都 **不允许存在前置空格** ,否则程序可能会出错,给你⼀个 ``Option expected``的提⽰。
也就是说,如果你直接从本⽂的纯⽂本格式中拷贝了相关的配置⾏过去,需要⼿动将前置的4个空格全部删除。
当然了,如果你觉得⼀下⼦要删除好多⾏的同样数⽬的前置空格是⼀件苦差使,那么也许 UltraEdit 的“Column Mode”编辑模式,可以给你很⼤帮助。
1、svnserve.conf``SVN\conf\svnserve.conf`` ⽂件,是 svnserve.exe 这个服务器进程的配置⽂件,我们逐⾏解释如下。
⾸先,我们告诉 svnserve.exe,⽤户名与密码放在passwd.conf ⽂件下。
当然,你可以改成任意的有效⽂件名,⽐如默认的就是 passwd::password-db = passwd.conf接下来这两⾏的意思,是说只允许经过验证的⽤户,⽅可访问代码库。
那么哪些是“经过验证的”⽤户呢?噢,当然,就是前⾯说那些在passwd.conf ⽂件⾥⾯持有⽤户名密码的家伙。
这两⾏的等号后⾯,⽬前只允许read write none 三种值,你如果想实现⼀些特殊的值,⽐如说“read-once”之类的,建议你⾃⼰动⼿改源代码,反正它也是⾃由软件::anon-access = noneauth-access = write接下来就是最关键的⼀句呢,它告诉 svnserve.exe,项⽬⽬录访问权限的相关配置是放在 authz.conf ⽂件⾥::authz-db = authz.conf当然,svn 1.3.2 引⼊本功能的时候,系统默认使⽤ authz ⽽不是 authz.conf 作为配置⽂件。
svnser ve.co nf的类容####################################################Thisfilecontr ols t he co nfigu ratio n ofthe s vnser ve da emon, if y ou### use it t o all ow ac cessto th is re posit ory. (Ifyou o nly a llow### a ccess thro ugh h ttp:and/o r fil e: UR Ls, t hen t his f ile i s### irre levan t.)### V isithttp://sub versi on.ap ache.org/for m ore i nform ation.[g enera l]### The anon-acce ss an d aut h-acc ess o ption s con trolacces s tothe### re posit ory f or un authe ntica ted (a.k.a. ano nymou s) us ers a nd### aut henti cated user s, re spect ively.### Vali d val ues a re "w rite", "re ad",and "none".### Sett ing t he va lue t o "no ne" p rohib its b oth r eadin g and writ ing;### "read" allo ws re ad-on ly ac cess, and"writ e" al lowscompl ete ### r ead/w riteacces s tothe r eposi tory.###The s ample sett ingsbelow arethe d efaul ts an d spe cifythatanony mous### u sershaveread-onlyacces s tothe r eposi tory, whil e aut henti cated###users have read andwrite acce ss to therepos itory.#an on-ac cess= rea d#au th-ac cess= wri te### The pass word-db op tioncontr ols t he lo catio n ofthe p asswo rd### dat abase file. Un lessyou s pecif y a p ath s tarti ng wi th a/,### the file's lo catio n isrelat ive t o the dire ctory cont ainin g### this conf igura tionfile.###If SA SL is enab led (see b elow), thi s fil e wil l NOT be u sed.### U ncomm ent t he li ne be low t o use thedefau lt pa sswor d fil e.pa sswor d-db= pas swd### Th e aut hz-db opti on co ntrol s the loca tionof th e aut horiz ation###rules forpath-based acce ss co ntrol. Un lessyou s pecif y a p ath### st artin g wit h a /, the file's lo catio n isrelat ive t o the the### d irect ory c ontai ningthisfile. Ifyou d on'tspeci fy an###authz-db,no pa th-ba sed a ccess cont rol i s don e.### Unc ommen t the line belo w touse t he de fault auth oriza tionfile.auth z-db= aut hz### Thi s opt ion s pecif ies t he au thent icati on re alm o f the repo sitor y.### Iftwo r eposi torie s hav e the same auth entic ation real m, th ey sh ould### h ave t he sa me pa sswor d dat abase, and vice vers a. T he de fault real m ### is r eposi tory's uui d.#r ealm= MyFirst Repo sitor y### Theforce-user name-caseoptio n cau ses s vnser ve to case-norm alize###usern amesbefor e com parin g the m aga instthe a uthor izati on ru les i n the ###authz-db f ile c onfig uredabove. Va lid v alues are"uppe r" (t o upp er-### ca se th e use rname s), "lower" (to lowe rcase theusern ames), and###"none" (to comp are u serna mes a s-iswitho ut ca se co nvers ion,which###is th e def aultbehav ior).#for ce-us ernam e-cas e = n one[sasl]### This opti on sp ecifi es wh ether youwantto us e the Cyru s SAS L### libr ary f or au thent icati on. D efaul t isfalse.### This sect ion w ill b e ign oredif sv nserv e isnot b uiltwithCyrus###SASLsuppo rt; t o che ck, r un 's vnser ve --versi on' a nd lo ok fo r a l ine### re ading 'Cyr us SA SL au thent icati on is avai lable.'#use-s asl = true###These opti ons s pecif y the desi red s treng th of thesecur ity l ayer### t hat y ou wa nt SA SL to prov ide.0 mea ns no encr yptio n, 1means###integ rity-check ing o nly,value s lar ger t han 1 arecorre lated###to th e eff ectiv e key leng th fo r enc rypti on (e.g. 128 me ans 128-bi t### encr yptio n). T he va luesbelow arethe d efaul ts.# min-encry ption = 0# max-encr yptio n = 256######################################################################## ##############p asswd的类容######################################################################## ######Thisfileis an exam ple p asswo rd fi le fo r svn serve.### Itsforma t issimil ar to that of s vnser ve.co nf. A s sho wn in the### e xampl e bel ow it cont ainsone s ectio n lab elled [use rs].### T he na me an d pas sword foreachuserfollo w, on e acc ountper l ine.[use rs]# harr y = h arrys secre t# s ally= sal lysse cretcaiqu anhui = ca iquan huil iziqi ng =liziq ingy exiao feng= yex iaofe ng######################################################################## ########。
Win7 系统搭建SVN 服务端和客户端图文使用方法1、安装好VisualSVN Server后,运行VisualSVN Server Manger,打开服务器的 VisualSVN 界面:2、创建仓库(repository)第一种方式:按照上图,创建新的代码库,在下图所示的文本框中输入代码名称:上图中选择“empty repostory”,则在代码库只创建空的代码库StartKit,选下面的“single-project”则在代码库StartKit下面会创建trunk、branches、tags三个子目录;3种仓库默认推荐权限设置(Nobody…不允许任何人访问All Subversion users…所有svn用户都可以Customize permissions自定义权限允许,这里下面有个按钮,我们可以过会继续设置,当然你也可以在这里设置,然后点create创建)这里有个Repository URL这个地址就是客户端获取服务器代码的地址,你可以先记下来,也可以通过右击仓库名可以获得。
前面的WIN-TV..什么的是你计算机的名字,客户端都是服务器的ip地址就行了这就是标准的branches,tags,trunk服务器版本我们现在右击整个仓库,就是MyBlog项目,我们现在来创建一个admin管理员,用户名admin,密码admin,你可以在Users查找到他,可直接修改密码点击“OK”创建完代码库后,没有任何内容在里面。
我会在这个教程的第二部分说明如何迁入源代码。
下面,我们开始安全性设置,在左侧的Users上点击右键:输入上面的信息,点击OK,我们就创建一个用户了。
按照上面的过程,分别添加用户Developer1、tester1、manager1,好了,我们开始添加这些用户到我们刚才创建的项目里:点击上图中的"Add..."按钮,在下图中选择我们刚才添加的用户,点击OK按钮:说明:大家可能注意到了下图中的Groups,是的,你也可以先创建组,把用户添加到各个组中,然后对组进行授权,操作比较简单,在此略过。
权限文件authz配置
权限文件authz在apche与svnserve服务器上的配置不同,单版本库和多版本库上的配置也有不同。
1.配置authz时,如果svnserve的启动参数-r 所指定的目录为直接指定到版本库(称之为单库svnserve方式)
例如:svnserve -d -r d:\svn\project1
在这种情况下,一个svnserve只能为一个版本库工作。
authz如果配置成下面这样就是错的:
应该配置成
因为[project1:/]表示project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的URL:svn://192.168.0.1/ 即可访问project1
2.-r指定到版本库的上级目录(称之为多库svnserve方式)
如果使用以下命令启动svnserve:
这种情况,一个svnserve可以为多个版本库工作,这是如果想限制指定库的指定目录,就应该指定具体的库,想像这样:
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1
这样的URL:svn://192.168.0.1/project2 即可访问project2
3.对中文目录进行权限控制时,应该将权限文件authz改为utf-8格式。
权限配置
作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件“authz-db”,同时为了叙述的清晰,我首先澄清一些概念。
1. 认证(Authentication)和授权(Authorization)
这两个术语经常一起出现。
其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了“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是我们的授权文件,也就是我们本文主要介绍的文件。
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_a1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1:project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
p2_a1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1:project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
对应的组及组的用户:
p1_group_a:p1_a1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_a1
p2_group_d:p2_d1
p2_group_t:p2_t1
5. 修改D:\SVNROOT\passwd文件
前面已经说过了,用户和密码文件应该是在D:\SVNROOT\passwd,所以我们为每一位用户设置权限,文件内容如下:
[users]
p1_a1 = p1_a1
p1_d1 = p1_d1
p1_t1 = p1_t1
p2_a1 = p2_a1
p2_d1 = p2_d1
p2_t1 = p2_t1
为了便于验证,所有密码和用户名一致。
6. 配置授权,修改D:\SVNROOT\authz [groups]
# 定义组信息
p1_group_a = p1_a1
p1_group_d = p1_d1
p1_group_t = p1_t1
p2_group_a = p2_a1
p2_group_d = p2_d1
p2_group_t = p2_t1
[/]
# 指定所有的版本库默认只读,root可读写* = r
root = rw
[project1:/]
# 指定对版本库project1根目录的权限
@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]
# 指定对版本库project2的/trunk/admin根目录的权限
# p2_group_a读写,p2_group_d和p2_group_t没有任何权限。
@p2_group_a = rw
@p2_group_d =
经过以上设置以后,你会发现当使用用户“p1_d1”,检出project1的trunk 时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。
关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。
再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。