- 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 ) 倾情提供