实现精细的目录访问权限控制 svn
SVN实现精细的目录访问权限

[users] morson = ShowMeTheMoney michael = mysecretpassword scofield = hellolittilekiller lincon = asyouknows111 rory = 8809117 linda = IlikeWorldCup2006
3.2.6 导入代码 在客户机 F:\ temp 目录下,建立好前述“背景假设”一节中描述的目录结构,然后用命令 F:\ temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword 导入整个目录结构。
感谢 提供的 Subversion 空间,让更多的人可以通过 svn 获得本文件。
感谢 google 公司提供的免费主页空间,让我可以放置完全定制的 HTML 文件。
3 实战本章先直接给出需求及其最终的结果,如果你觉得对配置有什么疑问,或者看不懂,请不要着 急,我会在后面的章节详细描述的。
在实际的工作当中,我们有时候会遇见需要控制项目目录的访问权限的情况,比如说对项目的一些关键 模块进行限制,仅允许少数授权人士才可以修改等。由 于项目的目录本身就是作为版本库的一个部分 被 Subversion 所收管,所以我们无法利用操作系统的帐户权限体系,来实现授权控制。因此,这个 问题就只有让 svn 自己来解决了。
本文是利用 reST 格式来编写的,如果你对它感兴趣,请访问 /rst.html 。如果想要看到更好的 html 格式,你可以通篇复制本文到 一个文本文件里,然后利用 docutils 的 rst2html.py 脚本编译它,当然,首先你必须安装 python。
svn 正则匹配路径分配权限

svn 正则匹配路径分配权限版本控制系统(Version Control System,简称 VCS)是软件开发过程中必不可少的一部分,其中,Subversion(svn)是一个常用的版本控制系统。
在使用svn 进行代码管理时,我们经常需要对不同路径的文件或目录设置不同的权限。
我们可以通过正则表达式来匹配路径,并将相应的权限分配给这些路径。
首先,我们需要在svn 的配置文件中设置路径匹配规则。
通过编辑svnserve.conf(对于svnserve 服务器)或者authz 文件(对于Apache HTTP Server)来实现。
下面是一些示例路径匹配规则的正则表达式:1. 路径匹配所有 .txt 文件,在根目录及其子目录下```[/](.*\/)*[^\/]*\.txt$```2. 路径匹配所有以 .doc 结尾的文件,在 trunk 目录及其子目录下```[^\/]+\/trunk\/(.*\/)*[^\/]*\.doc$```3. 路径匹配所有以 .css 结尾的文件,在 branches 目录及其子目录下```[^\/]+\/branches\/(.*\/)*[^\/]*\.css$```4. 路径匹配所有以/images 开头并以 .png 结尾的文件,在根目录及其子目录下```[/](.*\/)*images\/[^\/]*\.png$```以上是一些常见的路径匹配规则示例,你可以根据实际需求自定义正则表达式。
接下来,我们需要定义不同路径匹配规则对应的权限。
在authz 文件中,可以使用以下语法来为路径分配权限:```[路径规则]权限 = 用户名```例如,为路径 /trunk/test.txt 分配读写权限:```[/trunk/test.txt]rw = alice```这将让用户 alice 具有对 /trunk/test.txt 文件的读写权限。
使用正则表达式进行路径分配权限可以帮助我们更方便地管理代码库,确保不同用户或团队对应的路径有相应的权限。
svn 管理规范

svn 管理规范SVN管理规范由于版本控制系统(Version Control System,VCS)在软件开发过程中的重要性越来越被重视,Subversion(简称SVN)作为一种流行的开源版本控制系统,被广泛应用于各个领域。
为了保持版本管理的高效性和可维护性,在项目团队中制定并遵守一套SVN管理规范显得尤为必要。
本文将就SVN的使用及管理规范进行论述,并提供一些建议。
一、SVN仓库结构SVN仓库结构的良好规划可以为项目的管理提供方便。
通常来说,一个典型的项目仓库结构应包含以下目录:1. trunk(主干):主要用于开发团队的日常开发工作,并通过集成测试后才能进入发布。
2. branches(分支):用于存放项目在特定时间点上的快照,例如发布前的修复版本、临时性的实验性开发等。
3. tags(标签):用于标识项目的里程碑。
每个tag对应一个特定的版本,在发布、交付、重要里程碑等时刻创建。
二、版本控制最佳实践1. 提交频率:为避免冲突和代码丢失,开发者应当经常提交代码到SVN仓库,建议每天提交一次,以减少潜在的问题。
2. 提交注释:每次提交代码时,务必提供有意义的提交注释,描述更改的内容和目的,以便后续追踪和理解代码历史。
3. 不要提交无用的文件:避免将无关文件(如临时文件、编译生成的文件、日志等)提交到SVN仓库中,以保持代码库的整洁。
4. 避免对他人代码进行直接修改:当需要修改他人提交的代码时,应采用合适的方式,如创建分支、使用补丁等,以避免对他人代码造成影响。
5. 遵循编码规范:保持团队统一的编码规范,提高代码的可读性和可维护性,并在提交代码前进行代码审查,确保代码质量。
三、代码分支管理1. 特性分支:当需要实现某个新功能或解决某个问题时,应基于主干创建特性分支进行开发,避免直接在主干上进行修改,以免影响其他开发工作。
2. 发布分支:在即将发布新版本前,应创建一个发布分支,用于进行发布前的测试和Bug修复。
svn功能

svn功能
SVN(Subversion)是一个版本控制系统,可以管理和跟踪文
件和目录的修改历史。
它可以帮助团队协同开发,同时提供了版本控制、分支管理、冲突解决和协同开发等功能。
首先,SVN提供了版本控制功能,在一个项目中的每个文件
和目录都有一个独立的版本号,可以随时回溯到之前的版本。
这样,即使出现了错误或者需要回滚到之前的版本,也可以很方便地还原。
其次,SVN支持分支管理,可以创建不同的分支来进行独立
开发,然后将分支合并到主分支中。
这样可以避免多人同时修改同一个文件而引发冲突的情况,并保证团队成员的并行开发。
此外,SVN还可以帮助解决冲突。
当多个团队成员同时修改
了同一个文件,并提交到版本库时,SVN会自动检测到冲突,并给出冲突标记。
然后可以使用SVN提供的冲突解决工具,
手动解决冲突或者合并文件。
最后,SVN支持协同开发。
多个团队成员可以同时在同一个
项目上工作,并共享文件和目录。
通过SVN的权限管理功能,可以设定不同的权限给予不同的团队成员,控制他们对文件和目录的访问和修改权限。
总之,SVN作为一款强大的版本控制系统,不仅提供了版本
控制、分支管理、冲突解决和协同开发等基本功能,而且还具备高度稳定性和易用性。
它已经在许多软件开发团队中被广泛
应用,提高了团队协作效率,并帮助开发人员更好地管理和追踪项目的变更历史。
SVN管理规范

SVN管理规范一、引言SVN(Subversion)是一种版本控制系统,它能够追踪和管理文件和目录的变化,为团队协作开辟提供了便利。
为了确保SVN的有效使用和管理,制定一套SVN管理规范对于项目的顺利进行至关重要。
二、SVN仓库管理1. 仓库命名规范- 仓库名称应简明扼要,能够清晰表达其所属项目或者部门。
- 仓库名称应使用全小写字母,可以使用连字符或者下划线进行单词分隔。
- 避免使用过于复杂或者含有特殊字符的仓库名称。
2. 仓库权限管理- 仓库管理员应根据项目或者部门的需求,合理分配用户权限。
- 严格控制对仓库的读写权限,仅授权给相关人员。
- 定期审查和更新仓库权限,确保权限的合理性和安全性。
3. 仓库备份- 定期对仓库进行备份,确保数据的安全性和完整性。
- 备份数据应存储在可靠的设备或者服务器上,远离潜在的风险和灾害。
三、SVN代码管理1. 项目结构规范- 项目应按照一定的层次结构进行组织,便于管理和维护。
- 项目根目录下应包含trunk、branches和tags三个子目录。
- trunk目录用于存放主要的开辟代码,branches目录用于存放分支代码,tags 目录用于存放发布版本的代码。
2. 分支管理- 分支应根据项目需要进行创建,每一个分支应有明确的目的和命名规范。
- 分支的创建、合并和删除应经过相应的讨论和审批。
- 定期进行分支合并,确保主干代码的稳定性和一致性。
3. 提交规范- 提交时应提供清晰的提交信息,说明本次提交的目的和内容。
- 提交信息应简明扼要,避免使用含糊不清或者无意义的描述。
- 提交前应确保代码的完整性和可编译性,避免提交存在错误或者冲突的代码。
4. 版本管理- 标记重要的版本里程碑,使用tags目录进行存档和管理。
- 每一个版本的标记应包含版本号、发布日期和简要说明。
- 版本标记应遵循一定的命名规范,便于快速定位和识别。
四、SVN日志管理1. 日志书写规范- 每次提交待码时,应书写详细的日志记录,包括修改的文件、修改的内容和原因等。
svn的权限管理与设置

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,我们就创建一个用户了。
SVN安装配置, 权限, 目录访问

关键词: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)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。
SVN管理规范

SVN管理规范SVN(Subversion)管理规范一、概述SVN(Subversion)是一种版本控制系统,用于管理和追踪文件和目录的变更。
本文旨在制定SVN管理规范,以确保团队成员能够正确、高效地使用SVN进行版本控制,保证代码的稳定性和可追溯性。
二、SVN仓库的创建与组织1. 仓库创建1.1 在服务器上创建SVN仓库,指定合适的路径和权限。
1.2 为仓库设置合适的名称,反映项目的名称或者功能。
1.3 确保仓库路径和名称易于理解和记忆。
2. 仓库组织2.1 在仓库中创建合适的目录结构,以便于团队成员快速定位和管理文件。
2.2 按照项目、模块或者功能进行分类,避免将所有文件都放在根目录下。
2.3 使用合适的命名规范,以便于识别和理解目录和文件的用途。
三、SVN操作规范1. 提交待码1.1 在提交待码前,先更新本地代码,确保与服务器上的最新版本保持一致。
1.2 提交待码时,确保只提交相关的文件和目录,避免提交无关的文件。
1.3 提交时,附上故意义的注释,描述本次提交的目的和内容。
2. 分支与合并2.1 当需要进行功能开辟或者修复时,基于主干(trunk)创建相应的分支(branch)。
2.2 在分支上进行开辟或者修复,确保不影响主干上的稳定版本。
2.3 定期将主干上的变更合并到分支上,保持分支与主干的同步。
2.4 功能开辟或者修复完成后,将分支合并回主干,并及时删除再也不需要的分支。
3. 标签管理3.1 当发布一个版本时,基于主干创建相应的标签(tag)。
3.2 标签用于标记特定版本的代码,以便于追溯和回滚。
3.3 标签普通不允许修改,确保标签的稳定性。
四、SVN权限管理1. 用户权限1.1 根据团队成员的职责和需求,为每一个成员分配适当的SVN权限。
1.2 确保权限的最小化原则,即每一个成员只拥有其工作所需的最低权限。
2. 分组权限2.1 根据团队的组织结构和工作流程,将成员分组,并为每一个组分配适当的SVN权限。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
================Subversion之路================----------------------------实现精细的目录访问权限控制----------------------------:作者: 郑新星:联系: zhengxinxing <A T> gmail <DOT> com:状态: 正稿:版本: 1.0:修订: $Id: The.Road.to.Subversion_authz.rst 1749 2006-12-05 08:05:59Z zhengxinxing $:版权: 作者保留对本文的一切修改、发布等权力。
任何人想要转载本文部分或全部内容时,必须保留包括作者、联系、状态、版本、修订、版权,共六项信息,并给出出处。
对本文的参考引用,则不受限制。
:关键词: Subversion 目录访问权限:献辞:仅以本文,献给中国广大的自由软件爱好者们:摘要:本文从一个实际的例子入手,介绍了如何利用Subversion 自带的目录管理功能,来实现对项目目录的精细访问权限的控制。
同时描述了在配置的过程中,需要注意的一些地方,如对中文的处理等。
.. section-numbering::.. contents:: 目录:backlinks: top前言====Subversion 权限简介-------------------在Subversion 的使用当中,存在“认证”、“授权”两个概念。
认证,即authentication,是指用户名与密码的认证。
授权,即authorization ,是指某用户对某个目录是否具备读、写权限的一种审核。
这两者配合作用,就组成了Subversion 的整个帐户管理体系。
在实际的工作当中,我们有时候会遇见需要控制项目目录的访问权限的情况,比如说对项目的一些关键模块进行限制,仅允许少数授权人士才可以修改等。
由于项目的目录本身就是作为版本库的一个部分被Subversion 所收管,所以我们无法利用操作系统的帐户权限体系,来实现授权控制。
因此,这个问题就只有让svn自己来解决了。
Subversion 提供了面向目录的帐户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。
不过对于对Apache 的配置与使用不是很熟悉的人来说,就不是很方便了。
而Subversion终于在 1.3 版本上,在svnserve.exe 服务器里面添加了这一功能,方便了很多人。
其他信息--------本文面向那些Subversion 的管理员,或者任何对Subversoin 有兴趣的人们。
本文假定读者对Subversion有一定的了解,因此不打算对所有涉及到的安装、使用,做一个细节性的描述。
若对于文章中描述的其他细节方面有所疑问,请访问“参考文献”一节里面的参考资料。
如果你对本文任何地方有什么意见,或者发现本文有着大大小小的错误,请联系zhengxinxing <A T> gmail <DOT> com 。
本文是基于Subversion 1.3.2、MS Windows 2003 Server Edition 平台来编写的,且Subversion 服务器是利用svnserve.exe 来架设的。
不过,本文讲述到的绝大多数内容,都是不仅与操作系统平台无关,而且与是采用svnserve(.exe) 还是使用Apache 来作为Subversion 服务器也基本无关。
因此为免罗嗦,本文就以svnserve(.exe) 为例进行描述,而略过Apache 服务器相关的内容,有兴趣的读者可以参考其他文章来在Apache 服务器下实现类似的功能。
本文是利用reST 格式来编写的,如果你对它感兴趣,请访问/rst.html。
如果想要看到更好的html格式,你可以通篇复制本文到一个文本文件里,然后利用docutils 的rst2html.py 脚本编译它,当然,首先你必须安装python。
本文的获得方式:- 原始发布点:/bbs/thread-6-1-1.html- 完整源文件,请利用svn 命令来获取,命令为 ``svn co svn:///woodpecker/zqlib/tangle/michael.zheng/road2svn``- HTML版式文件,请访问http://zhengxinxing.googlepages. ... bversion_authz.html(推荐)或/archives ... version1authz.shtml致谢====非常感谢 站的站长PCplayer ,他在本文编写过程中,给我提出了很多宝贵的意见与建议。
感谢 提供的Subversion 空间,让更多的人可以通过svn 获得本文件。
感谢google 公司提供的免费主页空间,让我可以放置完全定制的HTML 文件。
实战====本章先直接给出需求及其最终的结果,如果你觉得对配置有什么疑问,或者看不懂,请不要着急,我会在后面的章节详细描述的。
背景假设--------厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计、销售,并在北京、上海各设立了一个办事处。
对于工作日志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性,要看以前的日志必须一封一封邮件去查看,很麻烦。
于是就想到利用Subversion,让员工在自己电脑上编辑日志,然后利用svn传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一下svn commit 即可,比发送邮件还要简单的多。
- svn服务器相关信息- 服务器地址:192.168.0.1- 服务器OS:MS Windows 2000 Server Edition 中文版- 用于存放日志的代码库本地目录:``D:\svn\arm``- arm部门文档的目录结构如下::arm 部门名称├─diary工作日志目录│├─headquarters总部工作日志目录│├─beijing北京办日志目录│└─shanghai上海办日志目录├─ref公司公共文件参考目录└─temp临时文件目录- 人员情况- morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的交流- michael,arm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他想出来的主意 - scofield,北京办人员,老员工,为人油滑难管- lincon,上海办人员,老员工,大老实人一个- linda,总部协调员、秘书,文笔不错,长得也不错- rory,单片机技术员,技术支持- 访问权限需求分析- 允许总经理、部门经理读取所有文件。
顺便给他们开放写权限,以便体现对他们职位的尊重,虽然对于某些文件来说,他们若拥有“写”权限其实也没什么用处- 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志- 不允许匿名访问- ref目录只允许经理和秘书读写,对其他人只读- temp目录人人都可以随意读写使用svnserve.exe 作为Subversion 服务器----------------------------------------本节描述如何利用svnserve.exe 来作为代码库服务器端,实现上述功能。
至于另外一种代码库服务器端,即利用Apache 结合mod_dav_svn.so 来实现的代码库服务器端,由于其对于本文叙述的内容“实现精细的目录访问权限控制”而言,与前者没有太大的区别,故而略过不提。
它们二者只是在初次安装、配置方面存在一些不同,有兴启动Subversion 服务````````````````````在服务器端,打开一个命令行窗口,用CD命令进入Subversion 安装目录下的bin 目录,运行如下指令::svnserve -d -r d:\svn其中的-d 参数表示svnserve.exe 将会作为一个服务程序运行在后台,而-r 参数表示将``D:\svn`` 目录指定为代码库的根目录。
这样,当客户端使用类似svn://192.168.0.1/foo 这样内容的URL 来访问服务器时候,其所访问到的真实代码库,其实就是``D:\svn\foo``用上述命令行方式启动的svn 服务有个小缺点,就是在本试验过程中,服务器端必须要一直开着那个运行了上述命令的DOS窗口,不能关闭它。
如果不想看到这个窗口,可以将svnserve 安装成windows 的一个services,安装方式请参考其他文章。
建立代码库``````````在服务器端的``D:\svn`` 目录下,建立一个名为arm 的代码库,命令如下::D:\svn>svnadmin create arm使用上述命令之后,如果不出问题的话,在``D:\svn`` 目录下就会多出一个叫做``arm`` 的目录,其下具备conf、dav、hooks、locks、db 等子目录或文件,此即**一个名为arm的代码库** 。
从此,通过``svn://192.168.0.1/arm`` 这样的URL,我们就可以对这个代码库进行访问了。
接下来就要进入本文的正题了,也就是权限配置部分了。
其实进入``arm\conf`` 目录你就会发现,它下面已经存在三个写了一些帮助信息和示例的配置文件,以帮助用户尽早掌握其配置方法。
这三个默认的配置文件分别是svnserve.conf、passwd、authz 。
其中后两者没有后缀,对于windows 系统的用户来说,看起来总是有些怪异,所以在接下来的章节里面,我将它们两个都给添加了个conf 后缀,以便管理。
编辑代码库基础配置文件``````````````````````在服务器端,编辑代码库的``arm\conf\svnserve.conf`` 文件,如下::[general]password-db = passwd.confanon-access = noneauth-access = writeauthz-db = authz.conf管理用户帐号````````````在服务器端,新建``arm\conf\passwd.conf`` 文件,如下::[users]michael = mysecretpasswordscofield = hellolittilekillerlincon = asyouknows111rory = 8809117linda = IlikeWorldCup2006建立目录访问权限控制文件````````````````````````在服务器端,新建``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]* = rw导入代码````````在客户机``F:\temp`` 目录下,建立好前述“背景假设”一节中描述的目录结构,然后用命令``F:\temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword`` 导入整个目录结构。