SVN架构组件及版本控制使用指南

上传人:re****.1 文档编号:563239390 上传时间:2024-02-28 格式:DOCX 页数:17 大小:486.90KB
返回 下载 相关 举报
SVN架构组件及版本控制使用指南_第1页
第1页 / 共17页
SVN架构组件及版本控制使用指南_第2页
第2页 / 共17页
SVN架构组件及版本控制使用指南_第3页
第3页 / 共17页
SVN架构组件及版本控制使用指南_第4页
第4页 / 共17页
SVN架构组件及版本控制使用指南_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《SVN架构组件及版本控制使用指南》由会员分享,可在线阅读,更多相关《SVN架构组件及版本控制使用指南(17页珍藏版)》请在金锄头文库上搜索。

1、SVN 架构组件及版本控制使用指南摘 要:svn(subversion)是目前主流的版本控制工具。目前,绝大多数开源软件都使用svn作为代码版本管理软件。 svn 支持 unix、window 等平台,同时包括 stand-only 、Apache 两种运行方式,可以跨接 Internet, Intranet, Extranet 间的网络所有端点本文档主要关注 SVN 在版本控制、分支管理及版本发布更新,以期在实际工 作中能够灵活、方便的对产品、基线及更新进行控制及管理,同时对 SVN 的整体架构和安全领域进行简要介 绍,最后对 SVN 自动化备份及使用技巧进行说明。关键词:svn;版本;控制

2、;备份;安全、 SVN 介绍及架构SVN (subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用 SVN作为代码版本管理软件。本文旨在介绍SVN的版本控制及分支、合并管理,同时对SVN的日常维 护行为进行说明。SVN 具有高效、版本追溯功能强大、跨平台等功能,比 CVS 更适合进行版本管理和配置管理工作。 CVS 纵然是一个老牌的工具产品,并也对开源事业有贡献,但 CVS 的命令行操作着实让一些使用者头 疼。在对一个特定版本的文档 Check in 的时候,需要输入一长串的路径名、文件名。在操作易用性上 与CVS形成对比的是微软家族的VSS。作为微软

3、的产品,在图形界面化操作上自不用多言,但VSS只 能适用于小团队的开发工作。 VSS 是很好的入门级工具,但它的一些功能太过于 “入门”,在验证密码、 保存密码这些基本功能上处理的不尽人意。适用于大型软件开发的有 中坚级的Clearcase,用它来管 理一些小型的项目管理有些 “大材小用”。 Clearcase 支持目录版本管理、异地团队开发、视图、多服务 器等强大功能,所以一些大公司把它做为一、二级产品管理用,但同样它的价格也不菲。CVS是开源的, 免费的,更何况它还有一个理想的替代者一一SVN。SVN的设计专门针对CVS的问题作了改进,命令的 设计更为 合理,对二进制文档和目 录这样的数据

4、加强了控制能力,并且吸收了 VSS 的 lock-modify-update(release) 的模式和 modify-merge 模式的优点这两种方式在一定程度都支持并 作了优化,没有提高使用的复杂度。由于SVN的设计结构很好,所以很容易为它开发客户端,还有WEB模 式的,可以远程管理,支持RSS更改订阅。需要注意的是,SVN只是一个工具,它提供了简单的配置管理操作手段,但是一个好的配置管理是 依托于配置管理流程以及对应流程控制软件的,这在下面也会说明。没有项目管理流程以及配置管理流 程控制的SVN只会导致最终的混乱,每一个软件都无法摆脱这种魔咒,何况 SVN目前仍存在很多无法 很好解决的问

5、题,具体可以参见 http:/ 。以下从 SVN 的架构开始本文。图1图中的一端是保存所有在版本控制下数据的 SVN 版本库,另一端是 SVN 的客户端程序,管理着所 有在版本控制下数据的本地映射(称为工作拷贝) ,在这两端之间是各种各样的版本库访问( Repository Access )层,某些使用电脑网络通过网络服务器访问版本库,某些则绕过网络服务器直接访问版本库。 SVN 客户端可以通过命令行进行操作,或者使用 SVN 的图形界面客户端进行 SVN 检出、更新、提交及 分支等操作。SVN 可以通过 Stand-only 方式直接访问版本库,或者通过 tcp/ip 协议访问配置库。SVN

6、版本库存在两种数据存储方式,即BDB(Berkeley DB)方式及FSFS方式。BDB方式提供事务支 持,可以进行热备份,同时支持事务回滚。但是 BDB 方式无法跨平台使用,不支持 window95 及 windows98(虽然这两个版本目前已经很少使用),且无法放置网络共享文件夹中。而FSFS方式不需要数 据库存储系统支持,且在系统崩溃后仍能继续使用。鉴于SVN对数据存储年限可能较长,同时未来环境 因素无法考量,故推荐使用 FSFS 存储方式。了解 SVN 的主体架构可以更迅速的理解第三部分关于 SVN 安全的介绍,同时能够使用户对日常所 遇见问题进行快速定位;熟悉 SVN 的实现方式后还

7、能为下一步更进一步的使用或二次开发提供基础。二、 SVN 分支介绍及使用(包括分支目录与目录合并,以及标签建立)0. 准备假设本地SVN检出目录为SVNTest,其中包括三个目录 trunk、branches和tags:图2其中 trunk 为主工作目录, branches 为分支目录, tags 为标签目录。这三个目录的作用会在后面进行介绍。目前 trunk 主目录中维护了本地的代码库和文档库 code 和 document:图31. 分支介绍 假设目前已经建立一个稳定的版本库,此时另外一个部门需要你提供该配置库所维护产品的一 个副本,然后这个副本与目前的配置库有些许细小差别。这种情况下该怎

8、么做? 做简单的方法就是做这个版本的拷贝,然后分别维护两个版本;同时你还需要同时维护这两个版本 的大部分相同的文件,使得主路径文件发生变化后,拷贝版本的对应文件也能同时产生正确更新。 这时,最原始的分支就已经产生了。分支常用来测试新功能,但又不会因为编译错误或 BUG 干扰开发主线。本文示例配置库中 branches 为分支目录。标记通常作为一个稳定的版本进行维护,在建立标记之后,通常不对标记进行更新和维护,标 记库通常作为一个基线或者稳定版本进行管理,示例库中 tags 对标记库进行维护。2. SVN 实现分支控制 前置条件:目前主工作目录 trunk 中 code 目录下代码已完成一轮迭代

9、测试并修改完毕。此时需 要在此基础上增加新的功能,同时原来的版本需要保证正常使用。此时需要为 code 目录建立分支开 发全新的功能,同时在主目录下进行后续的迭代测试后,正确的代码也需要维护入分支。 首先,我们需要为 code 目录建立分支: 右键点击该文件,选择 Branch/tagsF ,-kf fTJF(Q)J资源管理器(蜀Browse with A匚D5ee 搜素(日 在OneNote中作为笔记本打开 使用瑞星杀盖共享和安全(出f 5VN Update严 SVN Commit.lTortoiseSVN添加到压缩文件(添加到code.rarXD這压缩并E-mail.压缩到code.rar

10、并 E-mail发送到(吵剪切复制创連快捷方式(勺 删除側重命名(叫属性ed for branches or t日口口inciHci 匚 u ment缶 Show logRepo-browser 日=Check for modifications Revision graph Resolved.F Update to revision. Rename.X Delete勺 Revert.Clean upGet lock.-Release 1口匚jBranch/tag.Switch. 丫 Merge.Export. 勺 Relocate.图4选择分支种类,主要分为工作拷贝 (working cop

11、y) 方式和知识库 (repository) 方式,两种方式在使 用中没有很大差异,只是在分支维护方式上有差异,一般选择工作拷贝方式,简单不容易因为网络 问题而出现冲突。次数选择工作拷贝方式。 To Url 选择分支所在路径:图5点击 ok 后可以看到在 /branches/my_test_copy_branches 路径下产生测试分支 myBran1 。 到此为止分支创建完毕。此时在主工作库中维护更新后,在trunk中我们创建的分支也可以进行相应 的更新,同时在分支中我们还可以维护自己的与主工作库中不同的文件。目前我们已经有了我们的分支,这时分支目录的新功能已经添加完毕,现在要求将该新功能维

12、 护入主工作库,这是我们就需要进行分之合并。目前分支合并只适合差异文件不多的情况下, 最好是一个新的目录, 与主工作库没有文件关联 否则合并时就要选择冲突处理方式,会产生与期望相悖的结果。现在我们将我们刚才创建的分支 bran1 合并到刚才的主工作库,右键点击 merge:raniif目 .z打开(Q)资源管理器(笛H Show logBrowse with ACD5ee 搜索 在OneNHe中作为笔记本打开 使用瑞星杀垂Switch.共辜和安全(出f 5VN Update5VN Commit.二 TortoiseSVN总添加到压缩文件遍這添加到branl.rarW 压缩并E-mail.压缩到

13、branl .rar并 E-mail创連快捷方式(3 删除重命名(密-Repo-browser日=Check for modifications Revision graph3 Resolved.b Update to revision.Rename.X Delete0 Revert.Merge.Export. 勺 Relocate.4 Add.Delete and add to ignore list 卜.匚reate p日t匚h. .Apply giatch.PropertiesINDOW5system32.臺史士竺号說曾About图6下面出现三个选项,可以选择所需要合并的版本,或者按照最

14、新版本合并,或者将不同的分支 进行合并。我们选择按照版本合并:图7下面选择需要合并的分支以及需要合并的版本图8下面选择合并规则:图9之后是冲突解决方式,当冲突出现时我们可以选择以本地版本为标准,或者以目标版本为标准,或 者保存冲突,之后自己维护:图 10至此版本合并完成,可以看到主工作库中已经融入了分支中的文件。在这里简要介绍一下 branch 与 switch ,建立分支之后可以对分支进行更新操作,而 switch 则是 维护本地文件的一个镜像备份,一般在分支上维护一个新的分支可以考虑使用 switch 。3. SVN 实现标签控制我们的 tags 目录下存放的是标签库。标签库维护的是一些不会改变的文件及数据,比如建立基 线或者版本的时候,可以将完成的基线版本或者产品版本维护在标签库中。标签库其实是一种特殊的分支,其实现方式与创建分支的过程一样,只是在维护中不进行合并、 更新等操作,只是一个最简单的拷贝。4. 版本控制原则 以上介绍了版本控制的基本方法,然而实际过程中版本控制需要依托于管理,不管是管理流程 还是管理系统,都是真正的版本控制精髓。SVN (或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解 决掉。尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是 将希望

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号