1 / 28

用 svn 进行源代码管理

周敏 (0734061009) coderplay@gmail.com. 用 svn 进行源代码管理. 本文档归暨南大学计算机系 open talk 组版权所有 遵循 Creative Commons Attribution 2.5 协议. 摘要. 为什么我们需要源代码管理 ? 什么是 svn? svn 的基本概念与常用命令 分支与合并 怎么使用 svn 客户端 ? 怎么建立自己的源代码库 ? 怎么把 svn 建立在网页上 ?. 为什么我们需要源代码管理 ?. 代码回归 多人协作开发 版本发布 发布新版本时 , 不中止开发进程

forrester
Download Presentation

用 svn 进行源代码管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 周敏(0734061009) coderplay@gmail.com 用svn进行源代码管理 本文档归暨南大学计算机系open talk组版权所有 遵循Creative Commons Attribution 2.5协议

  2. 摘要 为什么我们需要源代码管理?什么是svn? svn的基本概念与常用命令 分支与合并 怎么使用svn客户端? 怎么建立自己的源代码库? 怎么把svn建立在网页上?

  3. 为什么我们需要源代码管理? 代码回归 多人协作开发 版本发布 发布新版本时,不中止开发进程 有特殊版本时, 可以创建分支 不同版本具有相同的bug 时,进行修复 追踪变化 自动构建

  4. 什么是svn? • svn(Subversion)是个自由、开源的版本控制系统 • svn的版本库可以通过网络访问 • svn不是软件配置管理(SCM)系统,而是一个通用系统

  5. svn结构

  6. 版本库 版本库是svn文件共享的核心,它储存所有的数据。按照文件树形式存储数据——包括文件和目录。

  7. 版本模型 从版本0开始,版本库的快照。

  8. 文件共享的问题 所有的版本控制系统都需要解决这样一个基础问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰? 版本库里意外覆盖别人的更改非常的容易。 我们有两个共同工作者,Harry和Sally,他们想同时编辑版本库里的同一个文件。如果首先Harry保存他的修改,过了一会,Sally凑巧用自己的版本覆盖了此文件。而Harry所有的修改不会出现在Sally的文件中,所以Harry的工作还是丢失了。

  9. 文件共享:锁定-修改-解锁方案(1)

  10. 文件共享:锁定-修改-解锁方案(2) • 锁定可能导致管理问题 • 如果Harry锁住文件后忘了此事,则Sally僵住。 • 锁定可能导致不必要的线性开发 • Harry编辑一个文件的开始,而Sally编辑此文件的结尾。本来不冲突,修改后合并即可。 • 锁定可能导致错误的安全状态 • 如果Harry锁住A,Sally锁住B,而两文件相互依赖,则两文件不能很好地工作。

  11. 文件共享:拷贝-修改-合并方案(1)

  12. 文件共享:拷贝-修改-合并方案(2) • 合并模型假定文件是可以根据上下文合并的文本文件 • 例如程序源代码。 • 对于二进制文件,可以采用锁定模型 • 如艺术品或声音,有必要采用锁定让用户轮流修改文件。如果没有线性的访问,有些人的工作最终要被放弃。 • svn两种模型都支持

  13. svn操作基本流程(1) • 取出版本库到本地工作拷贝 • svn checkout • 更新你的工作拷贝 • svn update • 做出修改 • svn add • svn delete • svn copy • svn move

  14. svn操作基本流程(2) • 检验修改 • svn status • svn diff • svn revert • 合并别人的修改到工作拷贝 • svn update • svn reslove • 提交你的修改 • svn commit

  15. 其它操作命令 • 检视历史记录 • svn log • svn diff • svn cat • svn list • 清除 • svn cleanup • 导入 • svn import

  16. 分支与合并(1) • 什么是分支 • 使用分支 • 创建分支 • 在分支上工作 • 分支背后的关键概念 • 在分支间拷贝修改 • 拷贝特定的修改 • 合并背后的关键概念 • 合并的最佳实践

  17. 分支与合并(2) • 常见用例 • 合并一条分支到另一条 • 取消修改 • 找回删除的项目 • 常用分支模式 • 转换工作拷贝 • 标签 • 分支维护

  18. svn客户端

  19. Windows客户端(1)

  20. Windows客户端(2)

  21. 在eclipse中使用svn

  22. 配置svn服务器(1) • 安装Subversion • 建立版本库 • 通过命令行(svnadmin create) • 通过GUI(tortoiseSVN) • 启动svn服务 • apache • svnserve

  23. 配置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

  24. 配置svn服务器(3) • 访问权限分配 • 初次导入 • svn import

  25. 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>

  26. Apache(2)

  27. 参考网址 • 暨南大学计算机系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/

  28. Any Question?

More Related