• 1. 使用Subversion进行版本控制栗洪利 20101215
  • 2. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn使用注意事项 Git:分布式的版本控制系统
  • 3. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 4. 版本控制与配置管理版本控制是配置管理的核心任务 将代码集中存放在版本控制资源库中 资源库中存储了所有文件的所有历史版本 可以从资源库中获取到任意文件的任意历史版本 可以将资源库中不同版本的变更进行合并
  • 5. 版本控制软件的作用版本历史,这对软件开发中经常反复修改代码是非常重要的 不同版本的文件差异对比 团队协作 自动合并文件修改 对产品发布进行版本跟踪与管理
  • 6. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 7. 版本控制工具CVS、SVN、VSS、ClearCase、Git等 SVN vs CVS:集中式版本控制系统 SVN:专为解决CVS的不足而开发 Svn对cvs的增强 全局性的版本编号 目录的版本控制 原子性提交 更好的二进制文件处理与网络传输控制 高效、快捷的创建分支与基线 。。。 不需要花费资源记录每次的提交文件列表 分支、基线的创建与合并更加灵活方便
  • 8. CVS与SVN的对比比较项目CVSSVN权限控制是否依赖系统帐号依赖不依赖可否对分支授权否是是否支持LDAP认证否是图形化帐号管理否是(集中管理平台)用户可否获取忘记口令,修改口令否是(集中管理平台)目录,文件名变更否是分支 管理创建分支时间耗时*快分支可见、查询难易二进制文件二进制优化否是二进制文件标识手工自动二进制文件(图形文件)被破坏易破坏不易破坏事物 处理原子提交否是修改提交说明单个文件是换行符可否指定换行符类型否是检查换行符设定,避免跨平台开发带来的混乱否是功能扩展CVSROOThooks 脚本网络 带宽网络带宽占用高低脱机命令否部分
  • 9. 为什么要使用SVN不需要花费资源记录每次的提交文件列表 全局版本号记录了所有的历史信息,历史信息一目了然 分支与基线的创建与合并更加灵活方便 分支、基线、文件夹Copy是相同的,不消耗服务器资源,可以灵活地组织分支与各洐生产品的目录结构 依据全局版本号,可以随时将需要的变更信息合并到需要的位置 不需要额外的文档即可进行集中的配置管理 与Commit注释相结合,可以摒弃CVS需要使用的ChangeList文档 与需求管理、Bug管理结合方便。
  • 10. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 11. Svn的使用服务器目录结构 Module+trunk模式:一个资源库多个产品线 便于单独对不同产品线进行细分权限控制 Trunk+module模式:一个资源库一个产品线 便于不同项目间的资源共享
  • 12. Svn的使用服务端操作 创建文件夹 创建分支、标记 复制、粘贴 查看版本历史 客户端操作 下载工程 提交修改、更新、同步 版本对比、查看版本历史 合并 修改文件夹名、文件名、移动文件位置 Windows下如何修改文件(夹)大小写 在服务器视图中修改、在本地资源管理器(不用SVN客户端)中删除文件(夹)、然后update
  • 13. Svn的使用工具 Eclipse插件 Subclipse:稳定、快速 Subversive:模仿CVS风格 TortoiseSVN 与Windows系统集成,方便易用
  • 14. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 15. Svn分支与标记管理标记管理 版本发布标记 重大变更标记 开发分支管理 开发分支 测试分支 重点功能开发分支 重点开发人员的开发分支 版本发布分支管理 为每次发布创建版本分支 在版本分支中提交补丁 定期将补丁合并到开发分支中
  • 16. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 17. Svn分支合并、冲突管理在管理方面进行规范,减少冲突的发生 冲突发生的场景 多人修改同一功能:通过沟通、管理规范避免 产品架构修改,引起与其它分支版本的冲突 产品的大版本升级尽量不合并到旧版本中 旧版本补丁与新版本的修改冲突 手工修正、合并冲突 代码格式化引起的冲突 统一使用Eclipse的代码格式化功能,统一格式化风格,减少冲突 需开发人员协助进行具体功能的合并工作
  • 18. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 19. 版本控制与需求、Bug管理的结合在需求、Bug管理系统中定义编号,SVN代码提交时使用属性关联需求或bug编号,从而使所有需求和Bug能够在版本系统中进行跟踪。 一些需求和Bug管理工具支持与svn进行集成 一个需求或Bug编号唯一对应一个SVN版本号 对于较大的修改,需要进行多次提交才能完成的需求或Bug,可以先建分支,在分支中完成功能后再合并到主版本 版本控制与需求、Bug管理的结合主要依靠管理手段进行规范 需求、Bug管理工具对svn集成的支持会大大简化相关的跟踪工作
  • 20. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 21. Svn版本管理规范与流程项目开始,由专人创建svn的目录结构并适当授权 产品测试、发布、升级时创建相关分支 开发工作始终在开发分支中进行 代码提交、分支合并必须填写有意义的注释、Bug编号等信息 整个团队可以共享同一个开发分支并行开发 必要时每个人可以根据需要为自己创建适当的个人分支,并频繁地向个人分支提交小的变更集,然后将小变更集集中为一个较大的变更集合并到共享的开发分支中 较重要的重大重构、原型验证开发需要创建相应的分支进行开发,完成测试验证后再合并到共享分支
  • 22. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 23. Svn最佳实践遵守项目目录结构规范 将classes等目录加入svn:ignore,不要提交classes目录及该目录下的任何内容 不要提交.project、.classpath等工程的配置文件 这些配置文件应由专人统一管理 轻易提交这些文件容易导致其它人更新后整个工程不可用 良好的提交注释 良好的注释能为版本管理节省大量的管理工作,节省时间,提高效率 注释要能体现一次提交对工程的影响和意义
  • 24. Svn最佳实践严格遵从变更集提交的原则 一个变更集是对项目的一次有意义的变更 变更集是多个文件变更的集合,一个变更集可以是一个Bug修改、一个完整的新功能添加、一次配置的变更等 在变更集提交前和提交后,项目工程都是可以良好运行的 不要提交一个不完整的变更集,这样的提交会导致整个项目或项目的部分功能运行失败 每前进一小步就提交一次 每完成一次较小的有意义的修改,就立即进行提交,既保护了工作成果,又利于版本管理 为较大的变更创建分支,将大变更拆分成多次对分支的小变更集提交,最后将分支合并到主干
  • 25. Svn最佳实践不要将多个变更集合并为一次提交 合并多个变更集将会使版本管理变得困难 修复一次误操作或错误修改时将不能直接恢复一个变更集 要遵从每前进一小步就提交一次的原则 需要时考虑创建个人开发分支 更新前先同步 先使用同步功能查看一下服务器端的修改 可以提前看到自己的修改是否与他人已提交的修改冲突 在同步过程中进行冲突合并
  • 26. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 27. Svn的未来1.7 Early of 2011 网络协议的性能提升 客户端文件系统格式升级 类似Git的数据格式 提升客户端性能 大大减少文件数量,降低空间占用
  • 28. 使用Subversion进行版本控制版本控制概述 版本控制工具 Svn的使用 Svn分支、标记管理 Svn分支合并、冲突管理 Svn与需求管理、bug管理的结合 版本管理规范与流程 Svn最佳实践 Svn的未来 Git:分布式版本控制系统
  • 29. Git:分布式版本控制系统SVN是CVS的下一代版本控制系统 Git是超越SVN的新一代分布式版本控制系统,最初是为了用于Linux的内核开发 具有SVN的所有功能 分布式的资源库 本地资源库是远程资源库的完整克隆 每个人都有一个完整的资源库,可以发布自己的分支 使用本地资源库进行版本控制,需要时可以将指定的修改推送到远程资源库,并能保持完整的版本历史 更好的分支合并与自动合并功能 适应分布式的开发环境
  • 30. Git:分布式版本控制系统Git vs SVN Git具有SVN的所有功能,同样成熟的工具支持 Git增加了分布式的支持 Git的使用比SVN稍复杂,较难理解 Git与SVN可以轻松地互相转换 git-svn 使用git访问svn的资源库 可以在不切换到git的情况下体验git 向svn推送内容时会丢失历史版本的细节信息 可以用于在svn中创建个人分支的替代方式 无成熟的图形化工具支持 不能作为Git的替代方式
  • 31. 谢谢!