280 likes | 450 Views
周敏 (0734061009) coderplay@gmail.com. 用 svn 进行源代码管理. 本文档归暨南大学计算机系 open talk 组版权所有 遵循 Creative Commons Attribution 2.5 协议. 摘要. 为什么我们需要源代码管理 ? 什么是 svn? svn 的基本概念与常用命令 分支与合并 怎么使用 svn 客户端 ? 怎么建立自己的源代码库 ? 怎么把 svn 建立在网页上 ?. 为什么我们需要源代码管理 ?. 代码回归 多人协作开发 版本发布 发布新版本时 , 不中止开发进程
E N D
周敏(0734061009) coderplay@gmail.com 用svn进行源代码管理 本文档归暨南大学计算机系open talk组版权所有 遵循Creative Commons Attribution 2.5协议
摘要 为什么我们需要源代码管理?什么是svn? svn的基本概念与常用命令 分支与合并 怎么使用svn客户端? 怎么建立自己的源代码库? 怎么把svn建立在网页上?
为什么我们需要源代码管理? 代码回归 多人协作开发 版本发布 发布新版本时,不中止开发进程 有特殊版本时, 可以创建分支 不同版本具有相同的bug 时,进行修复 追踪变化 自动构建
什么是svn? • svn(Subversion)是个自由、开源的版本控制系统 • svn的版本库可以通过网络访问 • svn不是软件配置管理(SCM)系统,而是一个通用系统
版本库 版本库是svn文件共享的核心,它储存所有的数据。按照文件树形式存储数据——包括文件和目录。
版本模型 从版本0开始,版本库的快照。
文件共享的问题 所有的版本控制系统都需要解决这样一个基础问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰? 版本库里意外覆盖别人的更改非常的容易。 我们有两个共同工作者,Harry和Sally,他们想同时编辑版本库里的同一个文件。如果首先Harry保存他的修改,过了一会,Sally凑巧用自己的版本覆盖了此文件。而Harry所有的修改不会出现在Sally的文件中,所以Harry的工作还是丢失了。
文件共享:锁定-修改-解锁方案(2) • 锁定可能导致管理问题 • 如果Harry锁住文件后忘了此事,则Sally僵住。 • 锁定可能导致不必要的线性开发 • Harry编辑一个文件的开始,而Sally编辑此文件的结尾。本来不冲突,修改后合并即可。 • 锁定可能导致错误的安全状态 • 如果Harry锁住A,Sally锁住B,而两文件相互依赖,则两文件不能很好地工作。
文件共享:拷贝-修改-合并方案(2) • 合并模型假定文件是可以根据上下文合并的文本文件 • 例如程序源代码。 • 对于二进制文件,可以采用锁定模型 • 如艺术品或声音,有必要采用锁定让用户轮流修改文件。如果没有线性的访问,有些人的工作最终要被放弃。 • svn两种模型都支持
svn操作基本流程(1) • 取出版本库到本地工作拷贝 • svn checkout • 更新你的工作拷贝 • svn update • 做出修改 • svn add • svn delete • svn copy • svn move
svn操作基本流程(2) • 检验修改 • svn status • svn diff • svn revert • 合并别人的修改到工作拷贝 • svn update • svn reslove • 提交你的修改 • svn commit
其它操作命令 • 检视历史记录 • svn log • svn diff • svn cat • svn list • 清除 • svn cleanup • 导入 • svn import
分支与合并(1) • 什么是分支 • 使用分支 • 创建分支 • 在分支上工作 • 分支背后的关键概念 • 在分支间拷贝修改 • 拷贝特定的修改 • 合并背后的关键概念 • 合并的最佳实践
分支与合并(2) • 常见用例 • 合并一条分支到另一条 • 取消修改 • 找回删除的项目 • 常用分支模式 • 转换工作拷贝 • 标签 • 分支维护
配置svn服务器(1) • 安装Subversion • 建立版本库 • 通过命令行(svnadmin create) • 通过GUI(tortoiseSVN) • 启动svn服务 • apache • svnserve
配置svn服务器(2) 建立windows服务 sc create svn binpath= "e:\Subversion\bin\svnserve.exe --service -r f:\code\svn" displayname= "Subversion Server" depend= Tcpip start= auto 删除windows服务 sc delete svn
配置svn服务器(3) • 访问权限分配 • 初次导入 • svn import
Apache(1) • 修改http.conf LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so <Location /repos> DAV svn SVNPath /absolute/path/to/repository </Location> <Location /svn> DAV svn SVNParentPath /usr/local/svn </Location>
参考网址 • 暨南大学计算机系open talk组 http://code.google.com/p/jnucsot/ • http://subversion.tigris.org/ • http://tortoisesvn.tigris.org/ • http://subclipse.tigris.org/ • http://svnbook.red-bean.com/ • http://httpd.apache.org/