• 1. SVN 培训 ---- arain 2010.7.23本文档由 SVN俱乐部(http://www.svnclub.com ) 倾情提供
  • 2. SVN 培训 SVN培训Phase 4SVN的权限控制Phase 1SVN介绍Phase 3SVN的目录结构Phase 2TSVN常用命令
  • 3. Phase 1 SVN介绍SVN 简介(what, why, when) What: 英文全称 (subversion),一种版本控制系统。什么是版本控制系统?有哪些版本控制系统(vss, cvs)? why: 支持重命名,跨平台,原子性提交,全局的版本号,高效地创建基线… when: 当需要对代码和文档进行版本控制的时候。特别是对于开发人员要做基于“基线”的开发的时候。什么是“基线”?
  • 4. 2. SVN的客户端:tortoiseSVN (TSVN), 我们的操作基本都是通过TSVN的。 3. SVN帐号注册(用svnregister实现): http://192.168.1.3:8080/svn 4. SVN的访问方式(与apache结合): 在TSVN中输入:http://IP:port/svn/版本库名/路径名。如:http://192.168.11.123:8888/svn/PTSUYOU003. 什么是版本库?如何打开TSVN (Repo-browser命令)? 在浏览器中输入:http://IP:port/svn可以看到所有的版本库。如: http://192.168.11.123:8888/svn 注意:前提是有访问权限,关于权限请参看第四节
  • 5. 注册SVN帐号访问http://192.168.1.3:8080/svn 远程注册帐号用svnregister实现远程注册。密码要大于6个字符,设置复杂些,比如包含字母和数字。
  • 6. Phase 2 TSVN常用命令Repo-browser(本地): 输入URL访问SVN版本库。 Check out: 从版本库中取出一个工作拷贝到本地。本地目录产生.svn隐藏文件夹,里边保存服务器以及本地的很多相关信息,可以与服务器进行数据交互。 Commit(本地): 从本地拷贝提交到版本库中。 Update(本地): 从版本库中更新到本地拷贝。 Export: 从版本库中取出文件或目录。本地不可以与服务器直接进行数据交互,类似于我们常说的下载。 Show log, create folder, delete, rename, refresh, add file/folder。 Resolved(本地): 解决冲突。 Update to revision (本地): 可以恢复到以前某一版本。 Tag/branch(本地): 用于创建基线。
  • 7. 2.1 浏览SVN版本库目录: Repo-browser
  • 8. (本页无文本内容)
  • 9. 2.2 Check out从版本库中取出一个工作拷贝到本地。
  • 10. (本页无文本内容)
  • 11. 2.3 commit 提交本地修改
  • 12. (本页无文本内容)
  • 13. (本页无文本内容)
  • 14. normal 正常 read only 只读 added 添加 modified 修改 deleted 删除 ignored 忽略 conflicted 冲突 locked 上锁 non-versioned 非版本
  • 15. 2.4 update 从版本库中更新到本地
  • 16. (本页无文本内容)
  • 17. 2.5 export从版本库中取出文件或目录本地不可以与服务器直接进行数据交互,类似于我们常说的下载。
  • 18. (本页无文本内容)
  • 19. 注意:没有.svn的隐藏文件夹,不与SVN直接联系。
  • 20. 在TSVN的目录上点右键还有很多命令,比如: Show log, create folder, delete, rename, refresh, add file/folder。2.6 TSVN上的其它命令
  • 21. 当在本地运行update命令弹出如下图所示的消息框的时候,说明产生冲突了。2.7  resolved 解决冲突
  • 22. 冲突文件里边的冲突部分会以: <<<<<<< .mine 本地的内容 ======= 版本库里的内容 >>>>>>> .r31 标识。
  • 23. 本地会多出一些以冲突文件名为前缀的其它文件,这些文件可以先不用管,等后面运行resolved命令后会自动消失。
  • 24. 解决冲突:解决冲突通常有两种办法,一种直接在文件上改,另一种用TortoiseMerge工具。解决冲突要与其它同事协商。如下图直接在文件上改,并同时要把冲突部分的标识也要删掉。冲突内容修改前:冲突内容修改后:解决冲突的两种办法
  • 25. 使用TortoiseMerge工具解决冲突在弹出的冲突消息框右键单击下图的蓝色部分,这时会弹出一个TortoiseMerge的界面。
  • 26. 左上角是版本库里对应文件的内容,右上角是本地冲突文件的内容,下边是合并(解决冲突)后的内容。 红色部分表示是冲突的内容,要对这部分内容进行修改。
  • 27. 可以在左上角(版本库里的文件)或右上角(本地的文件)的红色部分(冲突部分)右键单击,会弹出一个白色小框。 Use this text block: 表示合并后用这部分内容; use this whole file:表示合并后完全用这个文件。 后面两个命令用得少。
  • 28. 上图中我在左上角的红色区域选择了Use this text block,这时我们发现下边的合并框的红色部分没有了,变成了绿色,而里边的内容也变成了左上角我们选择的内容。
  • 29. 我们还可以在下边的框里直接编辑合并后的内容。编辑完后保存关闭TortoiseMerge。
  • 30. 解决完冲突以后运行resolved命令
  • 31. 运行resolve命令后会出现左上角的框,选中冲突的文件,点击OK。这时我们发现前面多出的几个以文件名为前缀的几个文件消失了。到此为止,冲突完全解决,可以正常提交(commit)。
  • 32. 2.8 Update to revision 可以恢复到以前某一版本。我们可以在本地用update to revision命令恢复到版本库中以前的某一版本。我们可以用show log命令查看以前的版本信息。这时我们发现填写log信息非常重要。如下图我们看到的log信息,我们在本地恢复到14版本。
  • 33. 恢复到14版本后,我们发现c.txt不见,因为那个时候版本库中还没有这个文件。
  • 34. 2.9 Tag/branch 创建基线
  • 35. 蓝色标出的是打基线的目的路径,红色标出的是基线的文件夹名字,注意这个文件夹是打基线的时候自动创建的,不是先前创建好的。
  • 36. 打基线前:打基线后:
  • 37. Phase 3 SVN的目录结构trunk: 开发主干线目录 doc: 文档目录 src: 源代码目录 tags: 基线目录 test release: 版本测试目录 product release: 产品发布目录(基线) branches: 分支目录 代码与文档在目录中的流动过程
  • 38. Phase 4 SVN的权限控制涉及公司内部资料,略
  • 39. 自由问答本文档由 SVN俱乐部(http://www.svnclub.com ) 倾情提供
  • 40. 谢谢大家!本文档由 SVN俱乐部(http://www.svnclub.com ) 倾情提供