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