SVN管理员使用指南
- 格式:doc
- 大小:1.62 MB
- 文档页数:46
文档规则[本地工作区] :work copy,本地工作副本;[主项目]:引用共用模块的新项目(工程)最新版本(HEAD revision):版本库里文件或目录的最新版本SA :SVN服务器的管理员PRA :单个项目库的管理员,或者是项目负责人User :普通工作人员WC :work copy ,本地工作副本1.版本控制原则SVN(或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解决掉。
尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是将希望寄托于软件工具来自动解决一切问题。
建议的开发过程组织:1.随行就市项目刚开始阶段,单独开发;项目稳定阶段,完整开发。
项目开发初期,各个项目成员负责自己的文件夹(或者模块),与SVN服务器间的更新、提交等操作只需要针对自己负责的文件夹(或者模块)就行了,他人的文件夹(或者模块)可以不必关心;项目稳定阶段,也就是每天的变更量很小了,所有项目成员与SVN服务器的更新、提交等操作需要针对项目的所有文件夹(或者模块),各个项目成员在其本地编译时本地工作区的全部项目程序(或者资料)均为最新的版本,保证项目作为整体能够顺利运行。
2.能躲就躲尽量保证一份文件只有一个项目成员在编辑。
举例说明:程序员A 负责底层中文件DBAccess.cs的编写,如果程序员B的工作要求他为DBAccess.cs增加两个方法,程序员B应该通知程序员A来增加而不是自己增加;如果此时A非常繁忙需要B自己增加,就需要B先更新本地的DBAccess.cs,然后开始修改,修改完成后立即提交并通知A更新本地的文件,通过缩短提交间隔来减少冲突。
2. 基于版本控制的开发流程版本控制下的软件开发基本流程注意:上述的流程中没有考虑测试和审核的步骤。
3. 各阶段中svn 的使用方法介绍3.1. 安装后的常规设置3.1.1. 中文界面的设置将TortoiseSVN 的操作语言设置为中文,控制文件夹使用“_SVN ”以便支持 项目。
SVN使用指南——Windows环境版SVN使用指南——Windows环境版一、SVN简介1.1 什么是SVN?SVN是一个开源的版本控制系统,用于记录和追踪不同版本的文件或目录的变化。
1.2 SVN的作用SVN能够帮助团队协同开发,方便管理和版本控制项目代码。
二、SVN的安装2.1 SVN最新版本的SVN安装包,建议从官方网站以保证安全性。
2.2 安装SVN按照安装向导步骤进行安装,选择合适的选项和路径。
2.3 配置环境变量将SVN的安装路径添加到系统的环境变量中。
三、SVN的基本操作3.1 创建SVN仓库在本地或远程服务器上创建SVN仓库,用于存储版本库和文件。
3.2 检出项目从SVN仓库中将项目代码检出到本地,以便进行编辑和开发。
3.3 提交更改将本地修改后的文件提交到SVN仓库,以便团队其他成员获取并进行更新。
3.4 更新代码获取SVN仓库的最新版本,并将其应用到本地项目中。
3.5 解决冲突当多个成员对同一文件进行修改时,可能会出现冲突,需要解决后再提交。
3.6 版本控制切换或查看不同版本的文件,方便对比和回滚操作。
四、SVN的高级操作4.1 分支和合并创建代码分支,用于独立开发新功能或修复bug,最后再将其合并回主分支。
4.2 标签和发布创建标签,用于标记特定版本的代码,方便后续的回溯或发布操作。
4.3 钩子脚本利用SVN的钩子功能,可以在特定事件发生时执行自定义的脚本,实现自动化操作。
五、附件本文档包含以下附件:- SVN安装包- 示例代码仓库六、法律名词及注释6.1 SVN(Subversion):源于英文单词\。
SVN客户端操作说明TortoiseSVN的使用TortoiseSVN 是SVN 在客户端的优秀的工具,使用非常便利。
1.SVN管理员将服务器上对应项目的URL复制下来。
将url及用户的用户名、密码发送给用户。
2.用户机器上得事先安装好TortoiseSVN。
在自己文件夹下新建一个与版本库同名(也就是url最后的那个)的文件夹。
并按下图操作。
如上图url 处粘贴管理员传过来的url.如出现上图提示,是因为没有输入用户名和密码,点击“Accept permantly”即可。
3.如何签出文件?与VSS中有区别,SVN中的文件修改时即自动签出,不需要显式签出。
4.修改过的文件与正常文件的直观区别?如上图,绿色打勾的为正常文件,红色感叹号的为正修改文件。
5.SVN中在什么情况下需要加锁?SVN与VSS的比较大的区别就是:SVN默认是可以并行修改的,而VSS则是独占式修改。
VSS对于合作开发,有很多情况下两人修改同一个模块时修改到同一文件是非常常见的情况,VSS只能等待前一个人修改完成,另一人才能继续。
SVN 可并行开发,合并签入。
如特殊情况(某人需要大量修改,而其它人很少会改动),为了防止并行开发,也可以执行锁定再签出。
在大多数情况下是不需要加锁文件的。
需要加锁文件的情况:1.非代码文件,如:Word、Excel等。
因为内部是二进制,出现冲突时不方便后期对比,最好是加锁。
2.某个代码文件,主要是自己需做大量修改(“大量”并不指以前,只是指现在签出之后做的),而其它人很少会改动。
加锁之后会造成其它人无法修改,完成修改之后请及时解锁,方便其它人使用。
6.如何加锁、解锁?加锁:如上解锁:如上7.如何签入修改后的文件?如上图,右键修改过的文件,后在菜单中选择“SVN Commit”8.修改了某个文件,但又不想改了,怎么回退?如上图,右键修改过的文件,后在菜单中选择“Revert”以上仅为TortoiseSVN 部分常用功能,如需仔细研究,请自行上网查找资料,可参考01、SVN Checkout(SVN取出)点击SVN Checkout,弹出检出提示框,在URL of repository输入框中输入服务器仓库地址,在Checkout directory输入框中输入本地工作拷贝的路径,点击确定,即可检出服务器上的配置库。
目录1.修改SVN访问密码 (1)2.SVN客户端使用说明 (2)2.1.安装SVN客户端 (2)2.2.迁出配置库内容 (3)2.3.维护工作文件 (4)2.3.1.增加文件 (4)2.3.2.更新文件 (8)2.3.3.删除文件 (9)2.3.4.修改文件 (10)2.3.5.比较版本差异 (10)2.3.6.撤销更改 (13)2.3.7.锁定和解锁 (13)2.3.8.重命名文件 (14)2.3.9.获取历史文件 (14)2.3.10.检查冲突 (15)2.3.11.解决冲突 (16)2.3.12.忽略无需版本控制的文件 (16)2.3.13.去除SVN标志 (17)2.3.14.查看文件每行的修改信息 (17)2.3.15.重置访问路径 (18)2.3.16.本地路径转换 (18)2.4.浏览版本库 (18)2.5.建立标签 (19)2.6.建立分支 (19)2.7.清除用户名等信息 (20)2.8.统计信息 (21)3.MYECLIPSE集成SVN (23)3.1.安装SVN插件 (23)3.2.配置M Y E CLIPSE提交目录 (28)1. 修改SVN访问密码打开IE,在地址栏中输入地址:http:// /svnmanager/index.php,进入SVNManager的欢迎界面,如下图所示:点击“登陆”按钮进入登陆界面,如下图所示:输入已知的用户名和密码,点击“登陆”按钮进入用户管理界面,点击“用户管理”按钮显示“编辑用户”菜单,如下图所示:点击“编辑用户”按钮,进入用户信息修改界面,如下图所示:在上图界面的“新密码”和“重复新密码”框中输入你设定的新密码,两框中的密码要保持一致。
在“当前用户密码”框中输入你的先前的登陆密码,。
点击“确定”按钮修改密码,后返回到编辑用户成功界面,在此界面中点击“退出”按钮完成此操作。
再次可使用新密码进行登陆。
2. SVN客户端使用说明2.1. 安装SVN客户端安装SVN客户端(我公司使用的SVN客户端为TortoiseSVN-1.4.8.12137-win32-svn-1.4.6):双击安装包→Next→选中“I accept the terms in the license Agreement”→Next→Install→选中“Show Changelog”→Finish→点击“Yes”按钮重新启动电脑。
1.版本控制原则SVN(或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解决掉。
尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是将希望寄托于软件工具来自动解决一切问题。
2.各阶段中svn的使用方法介绍2.1.初始化版本库初始化版本库有两种常用的方式:2.1.1.直接“导入Import…”(目前,OSSP版本已经导入到版本库,项目组成员无需做此操作)对要执行导入操作得项目文件夹进行如下清理:1. 把项目中不需要的文件删除。
(临时文件、编译器创建的文件,比如*.obj、二进制文件等。
)2. 把文件夹和子文件夹中的所有文件整理一遍。
虽然你可以在导入之后再来进行重命名或删除等操作,但是还是推荐你在导入之前把你的项目整理好。
在资源管理器(windows explorer)中选择项目(本地硬盘上)的根文件夹,单击鼠标右键,选择导入Import…命令,跳出一个对话框:在这个对话框中你需要填写你要将项目导入仓库的URL地址(svn必须小写)。
导入信息(Important Message)是用来记录日志信息的。
注意:与“忽略样式exclude pattern”匹配的文件或文件夹不会被导入,除非选择了“包含忽略的文件”选项。
按下“确定”按钮后,TortoiseSVN就开始把整个文件夹树(包括所有文件)导入到仓库。
用来做“导入Import”操作的这个文件夹的名字不会出现在仓库中,只有文件夹中的内容会出现。
注意:刚才用来做“导入Import”操作的这个文件夹并没有处于版本控制下!要获取一份处于版本控制之下的[本地工作区]副本,你需要对刚导入的版本做一次“检出Checkout”操作。
2.1.2.“检出Checkout”—>“提交Commit”新建一个空文件夹作为[本地工作区]的存放文件夹(建议与项目同名),在文件夹上(或者文件夹里)单击鼠标右键后在命令菜单中选择“检出Checkout…”,出现操作窗口。
目录第一章引言 (1)1.1Subversion的介绍 (1)1.2Subversion的特性 (1)1.3SVN链接模式 (2)1.4SVN操作流程 (2)第二章SVN使用 (4)2.1SVN软件安装 (4)2.2事业部SVN库介绍 (4)2.2.1事业部SVN库 (4)2.2.2帐号注册、权限申请 (5)2.3基本操作 (5)2.3.1操作介绍 (5)2.4系统规范使用 (19)2.4.1规范操作 (19)2.4.2版本控制的使用 (20)2.4.3与目录无关内容 (21)2.4.4文件夹目录名称规范 (22)2.4.5文件上传格式 (23)2.4.6文件、数据放置 (23)2.5日常使用问题 (23)2.5.1版本库无响应 (23)2.5.2邮件中的路径链接 (23)2.5.3系统库最上层打不开 (24)2.5.4提交失败(Commit fail) (24)2.5.5SVN文件夹无法下载 (25)2.5.6特征图标的显示 (25)2.5.7冲突问题解决 (26)第三章权限申请流程 (29)3.1权限定义 (29)3.2申请流程 (29)3.2.1普通权限申请 (29)3.2.2单位权限申请 (29)3.2.3特殊权限申请 (30)3.3表单使用 (31)附录 (1)参考文献 (6)SVN使用规范第一章引言1.1Subversion的介绍SVN是Subversion的缩写。
Subversion管理随时改动的文件和目录,以二进制格式存储所有的文件,使用高效的比较二进制差异算法来计算版本之间的改动。
同时,它是一个时间机器,随时记录文件和目录的每次改动,例如:文件的增加、删除、重新排列文件等。
同时SVN允许你恢复以前旧版本的数据,或者检查数据变化的历史。
SVN使用类似数据库事物的方式来处理用户提交入库的过程,整个改动要么成功的被提交,要么被中断并回滚。
在数据提交完之前,其他人是看不到用户提交的修改文件,你看到的要么是改动之前的状态,要么是改动之后的状态。
SVN个人使用指引背景:综合自身使用SVN之初出现的常用错误,比如已在本地删除某个文件,但一更新又从svn还原;或者修改某个文件所属的文件夹名称,无法更新或下载等等。
在受svn管理的文件中,所有的文件操作不能想当然的进行,添加删除和移动改名都是有对应的svn操作的,这样才能自动的反映到svn上来,尤其是移动文件这样的操作,如果操作不慎,就会无法将文件的修改历史联系起来。
下面就简单介绍一下svn的基本操作和常见错误。
公司SVN地址:https://192.168.0.71:8443/svn/Quality_Management注:如果只需查看SVN上面资料,只需在IE中输入上述地址即可查看,但如果要将文件上传到SVN,必须下载SVN工具。
1SVN是什么svn就是一个离线代码管理,可以多人一起修改,同时svn可进行有效的版本管理,比VSS更直观。
svn 是严格区分大小写的,存储中路径的名字只有大小写不同,也会当作不同的路径处理。
2SVN的版本概念先说明一下几个版本概念。
一个是服务器版本,每一次提交svn都会将版本号加1,无论你是修改了文件,还是添加删除了,只要你提交都会更新版本,不管你提交以后是否下载;第二个是本地基础版本,也就是上次update时svn服务器上的版本,比如你update时服务器上是11你的本地基础版本就是11,无论别人改了什么,服务器上更新了多少版,只要你不执行update 则你的基础版本永远是11;第三个是工作版本,就是你当前改着的版本,工作版本是基于基础版本的,如果没改,工作版本就和基础版本一致,如果你改了,你的工作版本就是从基础版本修改过来的。
3SVN基本操作3.1 svn checkout作为svn用户,首先安装SVN工具,这里不再赘述。
然后要做的是svn checkout,将svn关联到本地一个文件夹中。
这是第一步,否则无法进行commit和update的操作。
这个文件夹最好是空的文件夹,或者确保没有和svn上相同名称的路径,当然这也说明这个操作是个连线操作。
SVN 管理员使用指南目录1Subversion简介 (1)1.1Subversion简介 (1)1.2Subversion架构 (2)1.3Subversion组件 (3)1.4Subversion基本流程 (3)2安装SVN 服务 (4)2.1安装SVN和TortoiseSVN (4)2.2创建SVN资源库 (4)2.3创建SVNserver服务 (5)2.4运行SVNserver服务 (6)3用户及权限管理 (6)3.1用户管理 (7)3.2权限管理 (7)4SVN基本使用 (9)4.1导入/导出(import/export) (9)4.2初始化检出(checkout) (10)4.3更新修改(update) (10)4.4查看日志信息(show log) (10)4.5取消修改(revert) (10)4.6提交修改(commit) (10)4.7合并信息(merge) (10)4.8创建/删除/重命名 (10)4.9加锁/释放锁(get/release lock) (10)4.10添加、删除、重命名(add、delete、rename) (10)4.11拷贝(copy) (13)4.12查看修改信息(check for modifications) (13)4.13分支/标记(branch/tag) (13)4.14创建并应用补丁(create/apply patch) (15)4.15备份/恢复资源库 (17)4.16删除资源库 (19)4.17版本(revision)关键字 (19)4.18统计信息(statistics) (20)4.19禁用密码缓存 (21)5TortoiseSVN设置 (21)5.1常规设置(General) (23)5.2图标叠加(Icon overlays) (27)5.3网络设置(network) (29)5.4日志缓存设置(log caching) (30)5.5钩子脚本设置(Hook Scripts) (32)5.6外部程序设置(external programs) (32)6TortoiseSVN基本命令 (37)6.1Svn子命令 (37)6.2Svnadmin (38)6.2.1Svnadmin Switches (39)6.2.2Svnadmin Subcommands (39)6.3Svnlook (40)6.3.1Svnlook选项 (40)6.3.2Svnlook (41)6.4Svnserve (41)6.4.1Svnserve选项 (41)6.5Svnversion (42)6.5.1Svnversion选项 (42)1 Subversion简介1.1 Subversion简介Subversion是一个自由/开源的版本控制系统。
在Subversion管理下,文件和目录可以超越时空,即Subversion允许数据恢复到早期版本,或者是检查数据修改的历史。
Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。
从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。
因为修改不再是单线进行,开发速度会更快。
此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量。
它是一个通用系统,可以管理任何类型的文件集。
1.2 Subversion架构服务器端保存所有版本数据的Subversion版本库,本地端是Subversion 的客户程序,管理所有版本数据的本地映射(工作拷贝),两端之间是各种各样的版本库访问(RA)层,可以使用网络服务(Apache/svnserve)访问版本库,也可以绕过网络服务器直接访问版本库。
1.3 Subversion组件1.4 Subversion基本流程1) 初始化取出(checkout)版本库(repos),建立本地工作拷贝(WorkingCopy)。
2) 与repos同步(update),保证将要进行的编辑是最新版本。
3) 编辑源代码(包括创建、修改、删除)。
4) 与repos同步(update),提交(commit)之前先要同步到最新的版本,保证所有在自己之前的有关提交已经在本地有所知晓。
5) 解决冲突(resolve conflict)。
6) 提交(commit),建议写上这次提交或变更内容的摘要,便于以后查阅。
7) 再次执行步骤2)。
每次开始新的编辑前的同步repos很重要,另外经常地update,特别是多人项目中。
如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。
2 安装SVN 服务2.1 安装SVN和TortoiseSVN下载SVN服务器安装文件:svn-1.4.6-setup.exe下载客户端安装文件:TortoiseSVN-1.6.5.16974-win32-svn-1.6.5,然后运行安装,安装成功后必须重启计算机。
也可以根据需要加载中文语言包(不建议使用)。
在任意位置点击右键,出现下面图示即表示TortoiseSVN安装成功。
2.2 创建SVN资源库SVN资源库的创建有两种方式:命令行方式和客户端方式。
✓命令行方式:svnadmin create D:\svn\repos(注意目录路径名区分大小写)✓客户端方式:通过TortiseSVN来创建,在本地新建目录D:\svn\repos,选中文件夹repos,右击“TortoiseSVN——Create repository here”库类型选择默认的FSFS,创建成功后会在D:\svn\repo目录下出现若干文件和文件夹,可以看到三个配置文件authz,passwd,svnserve.conf。
其中svnserve.conf为服务配置文件(存放全局访问控制信息),passwd为访问资源库的认证文件,authz 为认证后的账户访问权限授权文件,可根据需要进行添加和授权。
后面在用户及权限管理处会详细介绍。
2.3 创建SVNserver服务运行cmd命令输入:sc create svnserve binpath= "C:\Subversion\bin\svnserve.exe --service --root D:\svn\repos"displayname= "svnserve" depend= tcpip start= auto上述命令可以实现名为“svnserve”服务的后台创建和自动启动。
2.4 运行SVNserver服务有两种方式运行svnserver服务:✓Cmd命令行输入:net start svnserve(停止svnserver服务用:NET STOP svnserve;删除svnserver服务用:net delete svnserve)✓控制面板—管理工具—服务:启动“svnserve”服务3 用户及权限管理在Subversion的使用当中,存在“认证”、“授权”两个概念。
认证,即authentication,是指用户名与密码的认证。
授权,即authorization ,是指某用户对某个目录是否具备读、写权限的一种审核。
这两者配合作用,就组成了Subversion的整个账户管理体系。
为了使用用户及权限管理功能文件,必须在服务器端打开D:\svn\ repos\conf\svnserver.conf,去掉下面四行前面的注释,并去掉前面的空格:# anon-access = read# auth-access = write# password-db = passwd# authz-db = authz并将read参数修改为none,表明禁止匿名用户访问版本控制库。
注意:权限配置文件中出现的用户名必须已在用户配置文件中定义。
对权限配置文件的修改立即生效,不必重启svn。
为了实现多项目的权限管理,多个项目共享相同的位于根资源库下的配置及认证文件。
3.1 用户管理资源库创建后,出现的passwd文件为访问资源库的认证文件(用户名和密码),即在此文件夹下可以添加、删除用户打开D:\SVNServer\repos\conf\passwd,添加用户admin、sc1/sc2、tom1/tom2,并设置相应的密码:[users]# harry = harryssecret# sally = sallyssecretadmin = 1234sc1 = 1234sc2 = 1234tom1 = 1234tom2= 12343.2 权限管理Subversion 提供了面向目录的账户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。
创建完资源库后,出现的authz为认证后的账户访问权限授权文件。
假设目录结构如下:Projectdevtesttest1test2要求:1、admin对所有目录可读可写2、Dev_group对dev目录可读可写,Test_group无权限3、Test_group对test目录可读可写,Dev_group无权限打开D:\SVNServer\ repos\conf\authz,对上面的用户添加分组:[groups]# harry_and_sally = harry,sallyAdmin_group = adminDev_group = sc1,sc2Test_group1 = tom1, tom2[/] //对根目录的权限控制@admin_group = rw* = r[/Cloud /dev] //对具体目录的权限控制@ admin_group = rw@ Develop_group = rw* = //其他用户无权限[/Cloud/test] //对具体目录的权限控制@ admin_group = rw@ Test_group = r* =备注:1、如果需要控制的文件夹为中文名称,需要把authz转换为UTF-8格式,建议使用UltraEdit的“文件——转换——ASCII to UTF-8”(我尝试过记事本转换未遂)。
2、若project下新增文件夹,一定要对新文件夹增加权限控制,否则所有人默认为可读。
4 SVN基本使用4.1 导入/导出(import/export)svn import是将未版本化文件导入版本库的最快方法。
具体使用方法举例:创建文件夹D:/ project1,project1文件夹下分别创建三个文件夹trunk,tags,branches,右键打开repository-browser,在URL中输入project1所在路径,然后点击ok即可成功导入数据至版本库,截图如下。