BST-SVN 相关知识专项培训 平台技术部 - 配置管理部 施景顺  20110706
主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li...
几个版本控制工具的比较 <ul><li>CVS 、 SVN 、  Git  、 ClearCase 、 VSS 等 </li></ul><ul><li>SVN vs CVS :集中式版本控制系统 </li></ul><ul><li>SVN :专...
CVS 与 SVN 的对比 比较项目 CVS SVN 权限控制 是否依赖系统帐号 依赖 不依赖 可否对分支授权 否 是 是否支持 LDAP 认证 否 是 图形化帐号管理 否 是 ( 集中管理平台 ) 用户可否获取忘记口令,修改口令 否 是 ( ...
Git 与 Svn 比较 <ul><li>Git 相对于 SVN 的优点 </li></ul><ul><ul><li>采用了分布式版本库的方式,不必服务器端软件支持。 适应分布式的开发环境 </li></ul></ul><ul><ul><ul>...
Git 与 Svn 比较 <ul><li>Git 相对于 SVN 的不足 </li></ul><ul><ul><li>Git 的使用比 SVN 稍复杂,较难理解 </li></ul></ul><ul><ul><li>Git 只适用于  Linu...
为什么要使用 SVN <ul><li>成熟的工具 </li></ul><ul><li>简单实用,满足需求 </li></ul><ul><li>大部分的使用习惯 </li></ul><ul><li>基于 svn 的大量二次开发运用 </li></ul>
主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li...
几种不同开发模式的区别 <ul><li>分支开发 </li></ul><ul><li>主干开发 </li></ul><ul><li>Version 开发 </li></ul>
分支开发(  使用场景  ) <ul><li>单主干多分支 - 并行开发模式 </li></ul><ul><ul><li>你的系统只有一个版本发布给最终用户; </li></ul></ul><ul><ul><li>你的维护方式是让客户不断升级到...
分支开发( 图例 )
分支开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 主干冻结,不允许开发 当前已经发布的版本 -R tags trunk 测试和发布专用分支,该分支代码不允许任何形式的修改 当前正在测试的版本 -Test 当前已经发...
主干开发(  使用场景  ) <ul><li>单主干 - 串行开发模式 </li></ul><ul><ul><li>你的系统只有一个版本发布给最终用户; </li></ul></ul><ul><ul><li>你的维护方式是让客户不断升级到下一个...
主干开发( 图例 )
主干开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 项目开发人员主要分支 , 其他人员无需使用该分支 当前正在开发的版本 -Dev tags trunk 测试和发布专用分支,该分支代码不允许任何形式的修改 当前正在测...
version 开发(  使用场景  ) <ul><li>多主干 - 串行开发模式 ( 主干开发的变体 ) </li></ul><ul><ul><li>你的系统有多个版本发布给最终用户; </li></ul></ul><ul><ul><li>每...
version 开发( 图例 )
Version 开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 主版本的开发分支 当前正在开发的版本 -Dev version Trunk/version 维护版本的开发分支 当前正在开发的版本 -Dev tags ...
主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li...
Svn 的使用 <ul><li>客户端工具 </li></ul><ul><ul><li>Eclipse 插件 </li></ul></ul><ul><ul><ul><li>Subclipse :稳定、快速 </li></ul></ul></ul...
Svn 常用命令 1 、将文件 checkout 到本地目录 svn co path ( path 是服务器上的目录) 例如: svn co  http://svn.alibaba-inc.com/repos/ali_asc/CSA/MLR/t...
Svn 常用命令 <ul><li>4 、更新 update 到某个版本 </li></ul><ul><li>svn up -r m path </li></ul><ul><li>例如: svn up 如果后面没有目录,默认将当前目录以及子目录下...
Svn 常用命令 <ul><li>7 、查看文件详细信息 </li></ul><ul><li>svn info path </li></ul><ul><li>例如: svn info test.php </li></ul><ul><li>8 、...
Svn 常用命令 <ul><li>9 、比较差异 </li></ul><ul><li>svn diff path( 将修改的文件与基础版本比较 ) </li></ul><ul><li>例如: svn diff test.php </li></u...
Svn merge 机制 <ul><li>svn merge -r m:n path </li></ul><ul><li>这个命令是包括三个参数的 :  </li></ul><ul><li>初始的版本树  </li></ul><ul><li>最...
主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li...
http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=29899979 svn 常见问题分享介绍
Svn 的未来 <ul><li>1.7  Early of 2012 </li></ul><ul><ul><li>网络协议的性能提升 </li></ul></ul><ul><ul><li>客户端文件系统格式升级 </li></ul></ul><...
Q& A
谢谢!
Upcoming SlideShare
Loading in …5
×

Bst svn专项培训

682 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
682
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bst svn专项培训

  1. 1. BST-SVN 相关知识专项培训 平台技术部 - 配置管理部 施景顺 20110706
  2. 2. 主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li></ul><ul><li>Q&A </li></ul>
  3. 3. 几个版本控制工具的比较 <ul><li>CVS 、 SVN 、 Git 、 ClearCase 、 VSS 等 </li></ul><ul><li>SVN vs CVS :集中式版本控制系统 </li></ul><ul><li>SVN :专为解决 CVS 的不足而开发 </li></ul><ul><li>Svn 对 cvs 的增强 </li></ul><ul><ul><li>全局性的版本编号 </li></ul></ul><ul><ul><li>目录的版本控制 </li></ul></ul><ul><ul><li>原子性提交 </li></ul></ul><ul><ul><li>更好的二进制文件处理与网络传输控制 </li></ul></ul><ul><ul><li>高效、快捷的创建分支与基线 </li></ul></ul><ul><ul><li>。。。 </li></ul></ul><ul><ul><li>不需要花费资源记录每次的提交文件列表 </li></ul></ul><ul><ul><li>分支、基线的创建与合并更加灵活方便 </li></ul></ul>
  4. 4. CVS 与 SVN 的对比 比较项目 CVS SVN 权限控制 是否依赖系统帐号 依赖 不依赖 可否对分支授权 否 是 是否支持 LDAP 认证 否 是 图形化帐号管理 否 是 ( 集中管理平台 ) 用户可否获取忘记口令,修改口令 否 是 ( 集中管理平台 ) 目录,文件名变更 否 是 分支 管理 创建分支时间 耗时 * 快 分支可见、查询 难 易 二进制文件 二进制优化 否 是 二进制文件标识 手工 自动 二进制文件(图形文件)被破坏 易破坏 不易破坏 事物 处理 原子提交 否 是 修改提交说明 单个文件 是 换行符 可否指定换行符类型 否 是 检查换行符设定,避免跨平台开发带来的混乱 否 是 功能扩展 CVSROOT hooks 脚本 网络 带宽 网络带宽占用 高 低 脱机命令 否 部分
  5. 5. Git 与 Svn 比较 <ul><li>Git 相对于 SVN 的优点 </li></ul><ul><ul><li>采用了分布式版本库的方式,不必服务器端软件支持。 适应分布式的开发环境 </li></ul></ul><ul><ul><ul><li>本地资源库是远程资源库的完整克隆 </li></ul></ul></ul><ul><ul><ul><li>每个人都有一个完整的资源库,可以发布自己的分支 </li></ul></ul></ul><ul><ul><ul><li>使用本地资源库进行版本控制,需要时可以将指定的修改推送到远程资源库,并能保持完整的版本历史 </li></ul></ul></ul><ul><ul><li>更好的分支合并跟踪能力。 </li></ul></ul><ul><ul><li>优越的性能 </li></ul></ul>
  6. 6. Git 与 Svn 比较 <ul><li>Git 相对于 SVN 的不足 </li></ul><ul><ul><li>Git 的使用比 SVN 稍复杂,较难理解 </li></ul></ul><ul><ul><li>Git 只适用于 Linux / Unix 平台,没有 Windows 版本 </li></ul></ul><ul><ul><li>Git 缺少集中式的权限管理和控制 </li></ul></ul><ul><li>git-svn </li></ul><ul><ul><li>目前没有特别的需求场景,个别开发作为兴趣和习惯在使用 </li></ul></ul>
  7. 7. 为什么要使用 SVN <ul><li>成熟的工具 </li></ul><ul><li>简单实用,满足需求 </li></ul><ul><li>大部分的使用习惯 </li></ul><ul><li>基于 svn 的大量二次开发运用 </li></ul>
  8. 8. 主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li></ul><ul><li>Q&A </li></ul>
  9. 9. 几种不同开发模式的区别 <ul><li>分支开发 </li></ul><ul><li>主干开发 </li></ul><ul><li>Version 开发 </li></ul>
  10. 10. 分支开发( 使用场景 ) <ul><li>单主干多分支 - 并行开发模式 </li></ul><ul><ul><li>你的系统只有一个版本发布给最终用户; </li></ul></ul><ul><ul><li>你的维护方式是让客户不断升级到下一个版本; </li></ul></ul><ul><ul><li>所有对系统的修改都必须包含在下一个版本中; </li></ul></ul><ul><ul><li>需要频繁的修改前一个发布版本的 bug ,以及不断开发新的版本。 </li></ul></ul><ul><ul><li>网站、 CRM 、 ASC 的广告应用等大多数 java 的 web 应用程序 </li></ul></ul>
  11. 11. 分支开发( 图例 )
  12. 12. 分支开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 主干冻结,不允许开发 当前已经发布的版本 -R tags trunk 测试和发布专用分支,该分支代码不允许任何形式的修改 当前正在测试的版本 -Test 当前已经发布的版本 -R branches trunk 开发专用分支 当前正在开发的版本 -Dev
  13. 13. 主干开发( 使用场景 ) <ul><li>单主干 - 串行开发模式 </li></ul><ul><ul><li>你的系统只有一个版本发布给最终用户; </li></ul></ul><ul><ul><li>你的维护方式是让客户不断升级到下一个版本; </li></ul></ul><ul><ul><li>所有对系统的修改都必须包含在下一个版本中; </li></ul></ul><ul><ul><li>已发布版本的 bug 是可控的,极少存在进行下一个版本开发过程中进行上一版本 bug 的修复工作。 </li></ul></ul><ul><ul><li>ASC- 算法,内容平台等 c++ 应用,平台技术部的公用类库和应用开发 </li></ul></ul>
  14. 14. 主干开发( 图例 )
  15. 15. 主干开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 项目开发人员主要分支 , 其他人员无需使用该分支 当前正在开发的版本 -Dev tags trunk 测试和发布专用分支,该分支代码不允许任何形式的修改 当前正在测试的版本 -Test 当前已经发布的版本 -R branches ─ ─ ─
  16. 16. version 开发( 使用场景 ) <ul><li>多主干 - 串行开发模式 ( 主干开发的变体 ) </li></ul><ul><ul><li>你的系统有多个版本发布给最终用户; </li></ul></ul><ul><ul><li>每个版本的维护都是独立进行的,只在需要的时候才进行各版本的合并维护; </li></ul></ul><ul><ul><li>已发布版本的 bug 是可控的,极少存在进行下一个版本开发过程中进行上一版本 bug 的修复工作。 </li></ul></ul><ul><ul><li>采取主干开发的理论上都可以采取 version 开发模式,例如 BT 的需求 </li></ul></ul>
  17. 17. version 开发( 图例 )
  18. 18. Version 开发( 结构模式 ) 分支名称 源分支 开发方式 对应版本 trunk 无 主版本的开发分支 当前正在开发的版本 -Dev version Trunk/version 维护版本的开发分支 当前正在开发的版本 -Dev tags trunk 测试和发布专用分支,该分支代码不允许任何形式的修改 当前正在测试的版本 -Test 当前已经发布的版本 -R branches ---- ----- ---
  19. 19. 主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li></ul><ul><li>Q&A </li></ul>
  20. 20. Svn 的使用 <ul><li>客户端工具 </li></ul><ul><ul><li>Eclipse 插件 </li></ul></ul><ul><ul><ul><li>Subclipse :稳定、快速 </li></ul></ul></ul><ul><ul><ul><li>Subversive :模仿 CVS 风格 </li></ul></ul></ul><ul><ul><li>TortoiseSVN </li></ul></ul><ul><ul><ul><li>与 Windows 系统集成,方便易用 </li></ul></ul></ul><ul><li>命令行方式 </li></ul>
  21. 21. Svn 常用命令 1 、将文件 checkout 到本地目录 svn co path ( path 是服务器上的目录) 例如: svn co http://svn.alibaba-inc.com/repos/ali_asc/CSA/MLR/trunk/ MLR 2 、往版本库中 add 新的文件 svn add file 例如: svn add test.php( 添加 test.php ) svn add *.php( 添加当前目录下所有的 php 文件 ) 3 、将改动的文件 commit 到版本库 svn ci -m “LogMessage“ PATH 例如: svn ci -m “add test file for my test“ test.php        
  22. 22. Svn 常用命令 <ul><li>4 、更新 update 到某个版本 </li></ul><ul><li>svn up -r m path </li></ul><ul><li>例如: svn up 如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 </li></ul><ul><li>5 、查看文件或者目录状态 status </li></ul><ul><li>svn st path (目录下的文件和子目录的状态,正常状态不显示)【 ? :不在 svn 的控制中; M :内容被修改; C :发生冲突; A :预定加入到版本库; K :被锁定】 </li></ul><ul><li>6 、删除文件 </li></ul><ul><li>svn rm path -m “delete test fle“ </li></ul><ul><li>例如: svn rm test.php 然后再 svn ci -m ‘delete test file‘ </li></ul>
  23. 23. Svn 常用命令 <ul><li>7 、查看文件详细信息 </li></ul><ul><li>svn info path </li></ul><ul><li>例如: svn info test.php </li></ul><ul><li>8 、查看日志 </li></ul><ul><li>svn log path </li></ul><ul><li>例如: svn log test.php -v (显示这个文件的所有修改记录,及其版本号的变化) </li></ul><ul><li>Svn log --stop-on-copy http://svn.alibaba-inc.com/repos/ali_asc/SYS/imatch2cn/branches/20110511_43459_1 -v ( 查看某个分支从创建版本开始显示的修改信息 , 创建版本号对分支合并非常关键, 获取送测版本的初始版本 ) </li></ul>
  24. 24. Svn 常用命令 <ul><li>9 、比较差异 </li></ul><ul><li>svn diff path( 将修改的文件与基础版本比较 ) </li></ul><ul><li>例如: svn diff test.php </li></ul><ul><li>svn diff -r m:n path( 对版本 m 和版本 n 比较差异 ) </li></ul><ul><li>svn diff -r 200:201 test.php </li></ul><ul><li>10 、将两个版本之间的差异合并到当前文件 </li></ul><ul><li>svn merge -r m:n path </li></ul><ul><li>例如: svn merge -r 200:205 test.php (将版本 200 与 205 之间的差异合并到当前文件,如果产生生冲突,需要手工处理一下) </li></ul><ul><li>11 、 SVN 帮助 svn help svn help ci </li></ul>
  25. 25. Svn merge 机制 <ul><li>svn merge -r m:n path </li></ul><ul><li>这个命令是包括三个参数的 : </li></ul><ul><li>初始的版本树 </li></ul><ul><li>最终的版本树 </li></ul><ul><li>一个接收区别的工作拷贝。 </li></ul><ul><li>合并的过程中发生的所有事 : </li></ul><ul><li>首先两个版本库树的比较,然后将区别应用到本地拷贝 . </li></ul><ul><li>如果 n>m ,则是增加内容合并 </li></ul><ul><li>如果 m<n ,则是回滚操作 </li></ul>
  26. 26. 主要内容 <ul><li>几个版本控制工具的比较 </li></ul><ul><li>几种不同开发模式的区别 </li></ul><ul><li>SVN 常用功能和命令介绍 </li></ul><ul><li>svn 常见问题分享介绍 </li></ul><ul><li>Q&A </li></ul>
  27. 27. http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=29899979 svn 常见问题分享介绍
  28. 28. Svn 的未来 <ul><li>1.7 Early of 2012 </li></ul><ul><ul><li>网络协议的性能提升 </li></ul></ul><ul><ul><li>客户端文件系统格式升级 </li></ul></ul><ul><ul><ul><li>类似 Git 的数据格式 </li></ul></ul></ul><ul><ul><ul><li>提升客户端性能 </li></ul></ul></ul><ul><ul><ul><li>大大减少文件数量,降低空间占用 </li></ul></ul></ul>
  29. 29. Q& A
  30. 30. 谢谢!

×