《SVN操作规范与指南》.docx_第1页
《SVN操作规范与指南》.docx_第2页
《SVN操作规范与指南》.docx_第3页
《SVN操作规范与指南》.docx_第4页
《SVN操作规范与指南》.docx_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN操作规范与指南 文档版本:Version 1.0SVN操作规范与指南(产品研发部)编写: 王卓譞2011 年 6 月 8 日校对: 年 月 日审核: 年 月 日标审: 年 月 日批准: 年 月 日北京阳光伟业科技发展有限公司修订记录日期修订版本描述作者2011年6月8日1.0初稿完成王卓譞2011年6月22日1.1新增2.5节AnkhSVN王卓譞分发记录Copy No.持有者和角色分发日期目录1SVN操作指南51.1版本控制基本概念51.1.1版本库51.1.2版本模型51.1.3工作副本81.1.4版本库的URL91.1.5修订版本91.1.6工作副本怎样跟踪版本库101.2使用指南111.2.1图示111.2.2检出111.2.3提交更改131.2.4解决冲突142全局规范152.1软件环境152.2证书安装152.3TortoiseSVN的安装与设置192.4Subclipse安装与设置212.5AnkhSVN安装与使用222.6密码修改232.7访问地址232.8版本库列表及其用途233部门库规范253.1目录规范253.2权限分配原则264产品库规范274.1目录规范274.2权限分配原则275项目库规范285.1目录规范285.2权限分配原则296实施库296.1目录规范296.2权限分配原则307代码库317.1目录规范317.2权限分配原则317.3内容规范317.4操作规范311 SVN操作指南1.1 版本控制基本概念1.1.1 版本库Subversion是一种集中的分享信息的系统,它的核心是版本库,储存所有的数据,版本库按照文件树形式储存数据包括文件和目录,任意数量的客户端可以连接到版本库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修改。版本库是另一种文件服务器,而不是你常见的那一种。最特别的是Subversion会记录每一次的更改,不仅针对文件也包括目录本身,包括增加、删除和重新组织文件和目录。1.1.2 版本模型所有的版本控制系统都需要解决这样一个基础问题: 怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易。考虑这个情景,我们有两个共同工作者,Harry 和 Sally,他们想同时编辑版本库里的同一个文件,如果首先 Harry 保存它的修改,过了一会,Sally 可能凑巧用自己的版本覆盖了这些文件,Harry 的更改不会永远消失(因为系统记录了每次修改),Harry 所有的修改不会出现在 Sally 的文件中,所以 Harry 的工作还是丢失了至少是从最新的版本中丢失了而且是意外的,这就是我们要明确避免的情况。锁定-修改-解锁 方案锁定-修改-解锁模型有一点问题就是限制太多,经常会成为用户的障碍: l 锁定可能导致管理问题。有时候 Harry 会锁住文件然后忘了此事,这就是说 Sally 一直等待解锁来编辑这些文件,她在这里僵住了。然后 Harry 去旅行了,现在 Sally 只好去找管理员放开锁,这种情况会导致不必要的耽搁和时间浪费。l 锁定可能导致不必要的线性化开发。如果 Harry 编辑一个文件的开始,Sally 想编辑同一个文件的结尾,这种修改不会冲突,设想修改可以正确的合并到一起,他们可以轻松的并行工作而没有太多的坏处,没有必要让他们轮流工作。l 锁定可能导致错误的安全状态。假设 Harry 锁定和编辑一个文件 A,同时 Sally 锁定并编辑文件 B,如果 A 和 B 互相依赖,这种变化是必须同时作的,这样 A 和 B 不能正确的工作了,锁定机制对防止此类问题将无能为力从而产生了一种处于安全状态的假相。很容易想象 Harry 和 Sally 都以为自己锁住了文件,而且从一个安全,孤立的情况开始工作,因而没有尽早发现他们不匹配的修改。复制-修改-合并 方案Subversion,CVS 和一些版本控制系统使用复制-修改-合并模型,在这种模型里,每一个客户读取项目版本库建立一个私有工作副本版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。但是如果 Sally 和 Harry 的修改重叠了该怎么办?这种情况叫做冲突,这通常不是个大问题,当 Harry 告诉他的客户端去合并版本库的最新修改到自己的工作副本时,他的文件 A 就会处于冲突状态: 他可以看到一对冲突的修改集,并手工的选择保留一组修改。需要注意的是软件不能自动的解决冲突,只有人可以理解并做出智能的选择,一旦 Harry 手工的解决了冲突(也许需要与 Sally 讨论),他就可以安全的把合并的文件保存到版本库。复制-修改-合并模型感觉是有一点混乱,但在实践中,通常运行的很平稳,用户可以并行的工作,不必等待别人,当工作在同一个文件上时,也很少会有重叠发生,冲突并不频繁,处理冲突的时间远比等待解锁花费的时间少。Subversion 缺省使用复制-修改-合并模型,大多数情况下可以满足你的需求。然而,Subversion 1.2 后还是支持锁定,如果你有不可合并的文件,或者你只是想实行强制管理策略,Subversion 仍然会提供你需要的特性。1.1.3 工作副本一个 Subversion 工作副本是你本地机器一个普通的目录,保存着一些文件,你可以任意的编辑文件,而且如果是源代码文件,你可以像平常一样编译,你的工作副本是你的私有工作区,在你明确的做了特定操作之前,Subversion 不会把你的修改与其他人的合并,也不会把你的修改展示给别人。1.1.4 版本库的URLSubversion 可以通过多种方式访问本地磁盘访问,或各种各样不同的网络协议,但一个版本库地址永远都是一个 URL,URL 方案反映了访问方法。方案访问方法file:/ 直接版本库访问(本地磁盘或者网络磁盘)。http:/ 通过 WebDAV 协议访问支持 Subversion 的 Apache 服务器。https:/ 与 http:/ 相似,但是用 SSL 加密。svn:/ 通过未认证的 TCP/IP 自定义协议访问 svnserve 服务器。svn+ssh:/ 通过认证并加密的 TCP/IP 自定义协议访问 svnserve 服务器。1.1.5 修订版本svn commit 操作可以作为一个原子事务操作发布任意数量文件和目录的修改。在你的工作副本中,你可以改变文件内容,创建、删除、改名和复制文件和目录,然后作为一个整体提交。在版本库中,每次提交被当作一次原子事务操作: 要么所有的改变发生,要么都不发生,Subversion 努力保持原子性以应对程序错误、系统错误、网络问题和其他用户行为。每当版本库接受了一个提交,文件系统进入了一个新的状态,叫做版本,每个版本被赋予一个独一无二的自然数,一个比一个大,初始修订号是 0,只创建了一个空目录,没有任何内容。可以形象的把版本库看作一系列树,想象有一组版本号,从 0 开始,从左到右,每一个修订号有一个目录树挂在它下面,每一个树好像是一次提交后的版本库“快照”。1.1.6 工作副本怎样跟踪版本库对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息: l 工作文件的基准版本(叫做文件的工作版本)l 一个本地副本最后更新的时间戳给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种: l 未修改且是当前的 文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。l 本地已修改且是当前的 工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。l 本地未修改且过时 这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。l 本地已修改且过时文件的工作副本和版本库都做修改,commit将会出错“out-of-date”,此时应先update,update将尝试合并公共修改和本地修改,如果不能自动合并,会将冲突留给客户处理。1.2 使用指南1.2.1 图示1.2.2 检出为了得到一个工作副本,需要进行从版本库检出的操作。在Windows资源管理器里选择一个存放工作副本的目录。右键点击弹出右键菜单,选择TortoiseSVN 检出命令。然后就会看到下面的对话框: 如果输入一个并不存在的目录名,那么这个名字的目录就会被创建出来。检出深度你可以选择要检出的深度,它允许你指定子目录递归的深度。如果你只需要大目录中的几个子条目,你可以只检出最高层目录,然后递归的更新选择的目录。l 全递归 检出完整的目录树,包含所有的文件或子目录。l 直接节点,包含目录。 检出目录,包含其中的文件或子目录,但是不递归展开子目录。l 文件子节点 检出指定目录,包含所有文件,但是不检出任何子目录。l 仅此项。 只检出目录。不包含其中的文件或子目录。l 工作副本 保持工作副本指定的深度。此选项不用于检出对话框,但它是其它所有含有深度配置对话框的默认配置。l 排除 对于已经创建好的工作副本,可以使用此选项来缩减文件夹的深度。这个选项只在更新至版本对话框中可用。1.2.3 提交更改将你对工作副本的修改发送给版本库,称为提交修改。但在你提交之前要确保你的工作副本是最新的。你可以直接使用TortoiseSVN 更新,或者,你可以先使用TortoiseSVN 检查修改看看哪些文件在本地或是服务器上已经有了改动。如果你的工作副本是最新的,并且没有冲突,你就已经为提交做好准备了,选择你要提交的文件和/或文件夹,然后TortoiseSVN 提交. 提交对话框将显示每个被改动过的文件,包括新增的、删除的和未受控的文件。如果你不想改动被提交,只要将该文件的复选框的勾去掉就可以了。如果你要加入未受控的文件,只要勾选该文件把它加入提交列表就可以了。1.2.4 解决冲突偶尔,当你从版本库更新、合并文件时,或者切换工作副本至一个不同的 URL 时你会遇到冲突。有两种冲突: l 文件冲突 当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。l 树冲突 当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。你可以通过TortoiseSVN 编辑冲突运行外部合并工具/冲突编辑器,或者你可以使用任何别的编辑器手动解决冲突。你需要冲定哪些代码是需要的,做一些必要的修改然后保存。然后,执行命令TortoiseSVN 已解决并提交人的修改到版本库。需要注意的是已解决命令并不是真正的解决了冲突,它只是删除了filename.ext.mine和filename.ext.r*两个文件,允许你提交修改。如果你的二进制文件有冲突,Subversion不会试图合并文件。本地文件保持不变(完全是你最后修改时的样子),但你会看到filename.ext.r*文件。如果你要撤消你的修改,保留版本库中的版本,请使用还原(Revert)命令。如果你要保持你的版本覆盖版本库中的版本,使用已解决命令,然后提交你的版本。你可以右击父文件夹,选择TortoiseSVN 已解决.,使用“已解决”命令来解决多个文件。这个操作会出现一个对话框,列出文件夹下所有有冲突的文件,你可以选择将哪些标记成已解决。2 全局规范2.1 软件环境l 服务器端:Apache+Subversionl 客户端:TortoiseSVNl Eclipse插件:Subclipse2.2 证书安装1、在浏览器中访问:/svn/产品研发部/03部门资源/开发工具/ 2、选择“TortoiseSVN客户端.rar”,右键目标另存为,将压缩文件下载到本地。解压缩后,svnauth目录下包含证书文件。3、以IE浏览器为例, 打开IE,点击工具Internet选项,切换至“内容”选项卡,点击“证书”4、在“个人”选项卡中点击导入5、按照向导进行操作,导入的文件为client1.pfx,私钥的密码为:884550078107,其他步骤直接选择“下一步”即可。6、接下来再在“受信任的根证书颁发机构”选项卡中将ca.crt文件导入,导入方法同第5步。7、至此,证书安装完成,打开浏览器,访问版本库,弹出如下图所示的对话框,选择证书,点击“确定”即可,此时可看到代表加密连接的小锁头图标。2.3 TortoiseSVN的安装与设置1、双击“TortoiseSVN-0210-win32-svn-1.6.13.msi”,(注:不要使用下载工具,否则会出现无法下载的情况。另外,如果是64位PC可选择“TortoiseSVN-1042-x64-svn-1.6.16.zip”下载。),并按照安装提示进行安装,安装完成后,在任意路径下右键,会出现如下图所示菜单。2、可根据个人需要选择是否安装简体中文语言包“LanguagePack_0210-win32-zh_CN.msi”,双击之后按照安装向导进行安装即可。安装完成后,在任意路径下右键TortoiseSVNSettings按照如下图所示将操作界面切换至简体中文然后点击右下角“应用”“确定”即可。(注:如果对TortoiseSVN客户端进行了升级,操作界面会恢复至英文,需要下载相同版本的简体中文语言包再进行安装。)3、在任意路径下右键TortoiseSVN版本库浏览器输入要访问的版本库地址,点击“确定”。4、在弹出的浏览框中,找到存放证书的路径,“文件类型”选择“所有文件”,选中“client1”证书,并勾选“保存用户端凭证路径”,点击“确定”。(注:保存证书的路径不要带有中文,否则会出现证书路径无法保存的现象。)2.4 Subclipse安装与设置Subclipse 是一个为Eclipse IDE添加Subversion支持的项目。支持几乎所有版本的Eclipse。1、在浏览器中访问:/svn/产品研发部/03部门资源/开发工具/ 2、选择“Subclipse.zip”,右键目标另存为,将压缩文件下载到本地。3、在Eclipse中,HelpInsatll Neaw SoftwareAddArchive,然后找到Subclipse.zip的存放路径,名称SVN,如下图所示点击OK,除Subclipse Integration for Mylyn 3.x (Optional)3.0.0外,其余的全部选中,如图所示接下来一直点击下一步即可。4、WindowOpen PerspectiveOtherSVN资源库研究,点击OK。打开SVN透视图后在左侧右键新建资源库位置,在url文本框中输入相应的地址即可。5、通过Eclipse访问https协议的版本库地址时,需要对设置稍作改动。WindowPreferencesTeamSVN将SVN接口按如图所示进行选择,然后点击“OK”。此时,在Eclipse中添加版本库地址时,会弹出一个对话框,要求选择授权文件,点击“浏览”找到client1.pfx即可,然后输入自己的用户名密码就可以正常访问了。2.5 AnkhSVN安装与使用AnkhSvn 是一个Visual Studio 的 SVN 插件,最新2.0版本支持 Visual Studio 2008 和 2010。这个软件允许在Microsoft Visual Studio IDE内执行共同的版本控制操作。1、在浏览器中访问:/svn/产品研发部/03部门资源/开发工具/ 2、选择“AnkhSvn-2.0.7765.279.msi”,右键目标另存为,将文件下载到本地。3、下载完毕后,按照安装向导安装即可。4、打开Visual Studio2008,单击菜单“工具”“选项”,然后选择Source Control下的插件选择,选择刚刚安装的插件。5、新建项目,勾选“Add to Subversion”。输入SVN地址,验证信息,点击“commit”。2.6 密码修改初始帐户为使用人中文名的全拼,例如:wangzhuoxuan,密码为123456,如需修改个人的版本库访问密码,可通过连接/cgi-bin/svnpass进行修改。2.7 访问地址未安装证书的用户访问:/svn/ + 库名,已安装证书的用户访问:/svn/ + 库名。2.8 版本库列表及其用途通过在浏览器中访问所有版本库的根路径:/svn/ 即可查看到所有的版本库,其中每个链接是一个对应的版本库。版本库列表如下表所示。版本库类别版本库名称产品库PD_01NBC可视化协同办公系统PD_02NBC资源管理系统PD_03应用系统部署平台软件PD_04NBC网络监控系统PD_05NS集群式文件存储系统PD_06开放平台_01单点登录PD_06开放平台_02用户中心PD_06开放平台_03消息中心PD_06开放平台_04用户行为统计PD_06开放平台_05短信平台PD_06开放平台_06门户PD_07课例分析系统PD_08新闻汇聚PD_09家校互动PD_10教案管理PD_11日程PD_12NBC校园知识管理平台项目库PJ_001中关村第一小学PJ_002史家小学PJ_003红山小学PJ_004府学胡同小学PJ_005石景山实验小学PJ_006大兴黄村小学PJ_007培星小学项目PJ_008劲松一小PJ_009七一小学PJ_010理工附中代码库bizplatformesrvisualplatformlessonanalysisniepopenplatformresourceplatformsso实施库产品发布部门库产品研发部l 产品库:以PD为前缀的版本库为产品库,用于存放与对应产品有关的资料、文档、设计资源等等。l 项目库:以PJ为前缀的版本库为项目库,用于存放与对应项目有关的资料、文档、设计资源等等。l 代码库:以英文命名的版本库为代码库,用于存放产品和项目的源码及配置文件等资源。l 实施库:名称为“产品发布”的版本库为实施库,用于存放实施工作中需要用到的安装包、部署文件等等,主要供实施部门使用。l 部门库:名称为“产品研发部”的版本库为部门库,用于存放部门规范、部门指南、部门资源、周计划和产品规划等相关资源。3 部门库规范3.1 目录规范部门库的目录结构如下图所示。l 00规范文档:该目录用于存放部门规范、制度等相关资料,公司以及部门发布的相关文档存放于该目录下,各组发布仅供各组参考的规范、制度放于以组名命名的子目录下。l 01周计划:该目录用于存放各组每周的周计划。l 02会议纪要:该目录用于存放部门会议产生的会议纪要。l 03部门资源:该目录用于存放部门内部的一些资源,现阶段包括三个子目录,其中“第三方框架”存放的是开发规范中描述的通用的、特定版本的框架发布包,“开发工具”存放的是开发规范中描述的制定特定版本的软件和插件等相关资源,“应用软件”存放的是办公中需要用到的一些应用软件资源。l 04产品规划:该目录用于存放产品规划的整体方案及相关资料。3.2 权限分配原则l 00规范文档:各组组长对该目录及其对应组的子目录具有对写权限,其他人只读权限。l 01周计划:各组组长对该目录及其对应组的子目录具有对写权限,其他人只读权限。l 02会议纪要:任何人都具有读写权限。l 03部门资源:任何人都具有读写权限。l 04产品规划:技术总监具有读写权限,其他人只读权限。4 产品库规范4.1 目录规范以“PD_01NBC可视化协同办公系统”为例,产品库的目录结构如下图所示。l 00产品培育:该目录用于存放产品开发前期的需求收集以及产品定义阶段所产生的文档。l 01产品设计:该目录用于存放产品的需求说明书、交互原型等相关资料。l 02产品实现:该目录用于存放静态页面、UI界面、代码技术文档等相关资料。l 03产品稳定:该目录用于存放测试工作输出的相关文档资料。l 04版本发布:该目录用于存放产品各个版本的发布包、安装程序等。4.2 权限分配原则产品库的权限分配原则会根据不同产品、不同环节所涉及到的具体人员开放读写权限,其余无直接干系的人员会开放只读权限。5 项目库规范5.1 目录规范以“PJ_001中关村第一小学”为例,项目库的目录结构如下图所示。l 01项目策划:该目录用于存放项目策划阶段文档,如项目方案、用户项目建设计划、项目前期沟通记录等相关资料。l 02项目计划:该目录用于存放项目计划阶段文档,如项目计划等。l 03项目调研:该目录用于存放项目调研过程中产生的相关文档资料,相关的文档资料按照类型存放于该目录的子目录下。l 04模块:以“04模块”为前缀的目录用于存放该模块从计划到最后发布整个过程所产生的相关资料,按照不同阶段存放于指定的子目录中。l 05第三方合作:该目录用于存放与第三方公司合作过程中所产生的相关资料等。l 06实施部署:该目录用于存放实施工作整个过程中产生的相关资料等,按照其所属的不同阶段分别存放于该目录的子目录下。l 07用户培训:该目录用于存放项目相关的用户培训手册、文档等相关资料。l 08周报:该目录用于存放项目进行过程当中产生的项目周报。l 09会议纪要:该目录用于存放与该项目相关的会议产生的会议纪要。5.2 权限分配原则项目库的权限分配原则会根据不同项目、不同环节所涉及到的具体人员开放读写权限,其余无直接干系的人员会开放只读权限。6 实施库6.1 目录规范实施库的目录结构如下图所示。实施库根据发布产品的不同进行子目录的划分,产品的子目录下再根据不同的版本进行划分。该库主要供实施部门进行项目实施准备时使用。6.2 权限分配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论