Subversion 简明教程 www.zhlwish.com
S ub v ersio n 简述 <ul><li>简称 SVN </li></ul><ul><li>流行的开源版本控制系统 </li></ul><ul><li>CollabNet 公司 2000 年创建用于替代 CVS </li></ul><...
Subversion 安装 <ul><li>Ubuntu </li></ul><ul><ul><li>apt-get install subversion </li></ul></ul><ul><li>Windows </li></ul><ul...
Subversion 安装 <ul><li>设置环境变量 </li></ul><ul><ul><li>将 C:Program FilesSubversionbin 加入环境变量 </li></ul></ul>
对版本控制的需求 <ul><li>协作 :合作开发时能共享代码并及时集成 </li></ul><ul><li>历史 :能追踪改变,能还原之前的版本 </li></ul><ul><li>Subversion 并不是一个只能用于管理源代码的系统,它...
版本控制的原理 <ul><li>Subversion 的版本库实质是一种文件服务器,核心功能是: </li></ul><ul><ul><li>共享 文件 </li></ul></ul><ul><li>在共享文件的过程中,会记录每一次改变 </l...
共享文件时存在的问题
方案一:锁定 - 修改 - 解锁 <ul><li>问题: </li></ul><ul><ul><li>“ 死锁”: </li></ul></ul><ul><ul><ul><li>Harry 锁定文件后忘记解锁 </li></ul></ul></...
方案二:拷贝 - 修改 - 合并
方案二解释 <ul><li>冲突 </li></ul><ul><ul><li>Sally 和 Harry 的修改交迭了(修改了同一行代码) </li></ul></ul><ul><ul><li>Subversion 并不能解决冲突,只能依赖人的...
Subversion 术语 <ul><li>版本库 URL </li></ul><ul><ul><li>http:// ei.hust.edu.cn : 9000 /svn/efile /trunk </li></ul></ul><ul><ul...
Subversion 术语 <ul><li>Checkout </li></ul><ul><ul><li>从代码仓库中下载源代码,并建立本地的 Working Copy </li></ul></ul><ul><li>Commit </li></...
Subversion 术语 <ul><li>Revision </li></ul><ul><ul><li>版本库收到一个新的提交后,版本库进入一个新的状态,被称为一个 Revision ,用一个唯一的数字标识,初始为 0 ,每提交一次 +1 <...
Subversion 的组成 <ul><li>svn </li></ul><ul><ul><li>命令行客户端,用于 checkout 、 commit 、 update </li></ul></ul><ul><li>svnversion </...
基本命令 <ul><li>查看帮助 </li></ul><ul><ul><li>svn help [command] </li></ul></ul><ul><li>创建一个版本库 </li></ul><ul><ul><li>svnadmin c...
基本命令 <ul><li>Checkout 代码 </li></ul><ul><ul><li>svn checkout /path/to/repository </li></ul></ul><ul><li>修改目录结构 </li></ul><u...
基本命令 <ul><li>看看修改了哪些 </li></ul><ul><ul><li>svn diff </li></ul></ul><ul><ul><li>svn status </li></ul></ul><ul><li>取消修改 </li...
基本命令 <ul><li>更新 Working Copy </li></ul><ul><ul><li>svn update </li></ul></ul><ul><li>查看历史 </li></ul><ul><ul><li>svn log –r...
基本命令 <ul><li>获得旧的版本 </li></ul><ul><ul><li>svn checkcout –r 5 </li></ul></ul><ul><ul><li>svn update –r 9 </li></ul></ul><ul...
一些关键字 <ul><li>可以认为是宏: </li></ul><ul><ul><li>HEAD :最新版本 </li></ul></ul><ul><ul><li>BASE : Working Copy 修改前的版本 </li></ul></u...
高级知识 <ul><li>分支 </li></ul><ul><ul><li>svn copy /srcrepo /distrepo –m ‘comment’ </li></ul></ul><ul><ul><li>svn checkout /di...
进一步学习 <ul><li>Subversion 自由图书 </li></ul><ul><ul><li>Version Control with Subversion </li></ul></ul><ul><ul><li>http://svnb...
www.zhlwish.com Where there is a will there is a way.
Upcoming SlideShare
Loading in …5
×

Subversion简明教程

5,100 views

Published on

An simpe

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,100
On SlideShare
0
From Embeds
0
Number of Embeds
137
Actions
Shares
0
Downloads
42
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Subversion简明教程

  1. 1. Subversion 简明教程 www.zhlwish.com
  2. 2. S ub v ersio n 简述 <ul><li>简称 SVN </li></ul><ul><li>流行的开源版本控制系统 </li></ul><ul><li>CollabNet 公司 2000 年创建用于替代 CVS </li></ul><ul><li>Subversion 被贡献给了 Apache ,成为 Apache 的一个子项目 </li></ul>
  3. 3. Subversion 安装 <ul><li>Ubuntu </li></ul><ul><ul><li>apt-get install subversion </li></ul></ul><ul><li>Windows </li></ul><ul><ul><li>Windows GUI 客户端: </li></ul></ul><ul><ul><ul><li>http://tortoisesvn.net </li></ul></ul></ul><ul><ul><li>Subversion for Windows ( 控制台程序 ) </li></ul></ul><ul><ul><ul><li>http://sourceforge.net/projects/win32svn/ </li></ul></ul></ul>
  4. 4. Subversion 安装 <ul><li>设置环境变量 </li></ul><ul><ul><li>将 C:Program FilesSubversionbin 加入环境变量 </li></ul></ul>
  5. 5. 对版本控制的需求 <ul><li>协作 :合作开发时能共享代码并及时集成 </li></ul><ul><li>历史 :能追踪改变,能还原之前的版本 </li></ul><ul><li>Subversion 并不是一个只能用于管理源代码的系统,它是 通用 的,可以管理任何类型的文件集(电影、账单) </li></ul>
  6. 6. 版本控制的原理 <ul><li>Subversion 的版本库实质是一种文件服务器,核心功能是: </li></ul><ul><ul><li>共享 文件 </li></ul></ul><ul><li>在共享文件的过程中,会记录每一次改变 </li></ul><ul><ul><li>文件 的改变(修改) </li></ul></ul><ul><ul><li>目录树 本身的改变(删除、忽略) </li></ul></ul>
  7. 7. 共享文件时存在的问题
  8. 8. 方案一:锁定 - 修改 - 解锁 <ul><li>问题: </li></ul><ul><ul><li>“ 死锁”: </li></ul></ul><ul><ul><ul><li>Harry 锁定文件后忘记解锁 </li></ul></ul></ul><ul><ul><li>非线性开发: </li></ul></ul><ul><ul><ul><li>如果 Harry 锁定一个文件修改其头部, Sally 需要修改其尾部,不得不等 </li></ul></ul></ul><ul><ul><li>死锁: </li></ul></ul><ul><ul><ul><li>Harry 编辑 A 文件,依赖 B 文件,但是 Sally 在修改 B 文件,依赖 A 文件 </li></ul></ul></ul>
  9. 9. 方案二:拷贝 - 修改 - 合并
  10. 10. 方案二解释 <ul><li>冲突 </li></ul><ul><ul><li>Sally 和 Harry 的修改交迭了(修改了同一行代码) </li></ul></ul><ul><ul><li>Subversion 并不能解决冲突,只能依赖人的智商 </li></ul></ul><ul><ul><li>手动解决冲突后,将合并的版本再次提交到版本库 </li></ul></ul><ul><li>锁定 </li></ul><ul><ul><li>有时候是必须的 </li></ul></ul><ul><ul><li>Subversion 支持锁定 </li></ul></ul>
  11. 11. Subversion 术语 <ul><li>版本库 URL </li></ul><ul><ul><li>http:// ei.hust.edu.cn : 9000 /svn/efile /trunk </li></ul></ul><ul><ul><li>协议 服务器地址 端口 路径 分支 </li></ul></ul><ul><li>Working Copy </li></ul><ul><ul><li>电脑上的一个普通目录 </li></ul></ul><ul><ul><li>每个文件夹下有个 .svn 文件夹(记录变更) </li></ul></ul><ul><ul><li>里面的文件在版本控制之下 </li></ul></ul><ul><ul><ul><li>不能使用系统命令删除与重命名 </li></ul></ul></ul><ul><ul><ul><li>需要使用 Subversion 提供的命令将其从版本库中删除和重命名 </li></ul></ul></ul>
  12. 12. Subversion 术语 <ul><li>Checkout </li></ul><ul><ul><li>从代码仓库中下载源代码,并建立本地的 Working Copy </li></ul></ul><ul><li>Commit </li></ul><ul><ul><li>对本地 Working Copy 修改后,提交到代码仓库 </li></ul></ul><ul><li>Update </li></ul><ul><ul><li>远程代码仓库修改后,同步本地 Working Copy 到最新状态 </li></ul></ul>
  13. 13. Subversion 术语 <ul><li>Revision </li></ul><ul><ul><li>版本库收到一个新的提交后,版本库进入一个新的状态,被称为一个 Revision ,用一个唯一的数字标识,初始为 0 ,每提交一次 +1 </li></ul></ul><ul><li>Merge </li></ul><ul><ul><li>合并 </li></ul></ul><ul><li>Conflict </li></ul><ul><ul><li>冲突 </li></ul></ul><ul><li>Repository </li></ul><ul><ul><li>仓库 </li></ul></ul>
  14. 14. Subversion 的组成 <ul><li>svn </li></ul><ul><ul><li>命令行客户端,用于 checkout 、 commit 、 update </li></ul></ul><ul><li>svnversion </li></ul><ul><ul><li>查看 Working Copy 的版本 </li></ul></ul><ul><li>svnlook </li></ul><ul><ul><li>查看远仓库的情况 </li></ul></ul><ul><li>svnadmin </li></ul><ul><ul><li>创建、设置、修改版本仓库 </li></ul></ul><ul><li>svnserve </li></ul><ul><ul><li>单独的服务器程序,可以作为 daemon 进程 </li></ul></ul><ul><li>svnsync </li></ul><ul><li>…… ( 请查阅相关资料 ) </li></ul>
  15. 15. 基本命令 <ul><li>查看帮助 </li></ul><ul><ul><li>svn help [command] </li></ul></ul><ul><li>创建一个版本库 </li></ul><ul><ul><li>svnadmin create /path/to/repository </li></ul></ul><ul><li>将已有的代码结构导入版本库 </li></ul><ul><ul><li>svn import /file/path /path/to/repository –m ‘comment’ </li></ul></ul>
  16. 16. 基本命令 <ul><li>Checkout 代码 </li></ul><ul><ul><li>svn checkout /path/to/repository </li></ul></ul><ul><li>修改目录结构 </li></ul><ul><ul><li>svn add </li></ul></ul><ul><ul><li>svn delete </li></ul></ul><ul><ul><li>svn copy </li></ul></ul><ul><ul><li>svn move </li></ul></ul><ul><ul><li>svn mkdir </li></ul></ul><ul><li>修改文件 </li></ul><ul><ul><li>神马?不会修改文件? </li></ul></ul>
  17. 17. 基本命令 <ul><li>看看修改了哪些 </li></ul><ul><ul><li>svn diff </li></ul></ul><ul><ul><li>svn status </li></ul></ul><ul><li>取消修改 </li></ul><ul><ul><li>svn revert </li></ul></ul><ul><li>解决冲突 ( 标记为冲突已经被解决 ) </li></ul><ul><ul><li>svn resolved </li></ul></ul><ul><li>提交修改 </li></ul><ul><ul><li>svn commit –m ‘comment’ </li></ul></ul>
  18. 18. 基本命令 <ul><li>更新 Working Copy </li></ul><ul><ul><li>svn update </li></ul></ul><ul><li>查看历史 </li></ul><ul><ul><li>svn log –r 5:19 </li></ul></ul><ul><ul><li>svn log –r 5 </li></ul></ul><ul><ul><li>svn log main.c </li></ul></ul><ul><ul><li>svn diff –r 5:19 main.c </li></ul></ul><ul><li>浏览版本库 </li></ul><ul><ul><li>svn cat </li></ul></ul><ul><ul><li>svn list </li></ul></ul>
  19. 19. 基本命令 <ul><li>获得旧的版本 </li></ul><ul><ul><li>svn checkcout –r 5 </li></ul></ul><ul><ul><li>svn update –r 9 </li></ul></ul><ul><li>忽略不需要版本控制的文件 </li></ul><ul><ul><li>svn propset svn:ignore /path/to/file </li></ul></ul><ul><ul><li>涉及 SVN 高级用法:属性,请参阅相关文档 </li></ul></ul><ul><li>锁定 </li></ul><ul><ul><li>svn lock /path/to/file –m ‘comment’ </li></ul></ul><ul><ul><li>svn unlock /path/to/file </li></ul></ul><ul><li>遇到问题 </li></ul><ul><ul><li>svn cleanup </li></ul></ul>
  20. 20. 一些关键字 <ul><li>可以认为是宏: </li></ul><ul><ul><li>HEAD :最新版本 </li></ul></ul><ul><ul><li>BASE : Working Copy 修改前的版本 </li></ul></ul><ul><li>推荐的版本库布局 </li></ul><ul><ul><ul><li>/project name </li></ul></ul></ul><ul><ul><ul><li>/trunk 主枝 </li></ul></ul></ul><ul><ul><ul><li>/branches 开发分支 </li></ul></ul></ul><ul><ul><ul><li>/tags 标记分支 </li></ul></ul></ul>
  21. 21. 高级知识 <ul><li>分支 </li></ul><ul><ul><li>svn copy /srcrepo /distrepo –m ‘comment’ </li></ul></ul><ul><ul><li>svn checkout /distrepo </li></ul></ul><ul><li>合并分支 ( 和文件的合并不同 ) </li></ul><ul><ul><li>svn merge </li></ul></ul><ul><li>建立标记分支 </li></ul><ul><ul><li>svn copy /srcrepo /version_3_2_1 </li></ul></ul><ul><li>搭建一个 SVN 服务器并配置权限 </li></ul>
  22. 22. 进一步学习 <ul><li>Subversion 自由图书 </li></ul><ul><ul><li>Version Control with Subversion </li></ul></ul><ul><ul><li>http://svnbook.red-bean.com </li></ul></ul><ul><li>实践出真知 </li></ul><ul><li>不用仅仅使用 SNV 管理你的代码,他可以管理任何东西 </li></ul>
  23. 23. www.zhlwish.com Where there is a will there is a way.

×