VCS-02-关于SVN的了解及使用
欢迎并感谢浏览卢小龙的本篇文章
你好!亲爱的读者,本篇文章将主要记录本人在工作学习中对SVN的认识及实际使用,方便自己的学习历程记录以及复习参考,若有言错之处,请各位给予指点.
1.SVN的基本介绍
Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。
SVN相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。
2.SVN的基础应用
- repository(源代码库):源代码统一存放的地方
- Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
- Commit(提交):当你已经修改了代码,你就需要Commit到repository
- Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
日常开发过程其实就是这样的
(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN 可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。
3.SVN的安装
3.1在windows安装SVN
把svn安装目录里的bin目录添加到path路径中,在命令行窗口中输入 svnserve --help 或 --version 来查看安装正常与否。
若出现入上图显示情况,则说明SVN已安装成功
3.2在CentOS下安装 SVN
大多数 GNU/Linux 发行版系统自带了Subversion ,所以它很有可能已经安装在你的系统上了。可以使用下面命令检查是否安装了。
svn --version
如果 Subversion 客户端没有安装,命令将报告svn命令找不到的错误。
[runoob@centos6 ~]$ svn --version
bash: svn: command not found
可以使用镜像 yum install subversion 命令进行安装。
[runoob@centos6 root]$ su -
密码:
[root@centos6 ~]# yum install subversion
已加载插件:fastestmirror, security
设置安装进程:
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.neusoft.edu.cn
* extras: mirrors.zju.edu.cn
* updates: mirrors.aliyun.com
解决依赖关系:
-->
执行事务检查:...
安装成功之后,执行 svn --version 命令。
[root@centos6 ~]# svn --version
svn,版本 1.6.11 (r934486)
编译于 Aug 17 2015,08:37:43
至此,centos下的SVN安装完成。
4.SVN版本控制
SVN的提交步骤与其他VCS无大致区别,本节主要记述一下SVN的版本回退操作。
当我们想放弃对文件的修改,可以使用 SVN revert 命令。
svn revert 操作将撤销任何文件或目录里的局部更改。
我们对文件 readme 进行修改,查看文件状态。
root@runoob:~/svn/runoob01/trunk# svn status
M readme
这时我们发现修改错误,要撤销修改,通过 svn revert 文件 readme 回归到未修改状态。
root@runoob:~/svn/runoob01/trunk# svn revert readme
Reverted 'readme'
再查看状态。
root@runoob:~/svn/runoob01/trunk# svn status
root@runoob:~/svn/runoob01/trunk#
进行 revert 操作之后,readme 文件恢复了原始的状态。 revert 操作不单单可以使单个文件恢复原状, 而且可以使整个目录恢复原状。恢复目录用 -R 命令,如下。
svn revert -R trunk
但是,假如我们想恢复一个已经提交的版本怎么办。
为了消除一个旧版本,我们必须撤销旧版本里的所有更改然后提交一个新版本。这种操作叫做 reverse merge。
首先,找到仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21。
svn merge -r 22:21 readme
5.TortoiseSVN 的使用
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。
下载地址:https://tortoisesvn.net/downloads.html,页面里有语言包补丁的下载链接。
进入创建的目录在空白处按下右键后(您可以在 MyWork 目录的 icon 上按,也可进入 MyWork 目录后,在空白的地方按),选择 SVN checkout。
接着您可以看到如下的画面:
首先我们要填入的是 repository(版本库)的位置,对于 SVN 来说,repository 的位置都是 URL。版本库 URL 这里填入我们测试的版本仓库地址 svn://10.0.4.17/test。
接着,稍微看一下 Checkout directory(检出至目录),这个字段应该要指向您的指定test目录。
确认后,按下 OK 按钮,您应该可以看到如下的信息窗口。
之后即可拉取到目标路标下的文件。
当我们要将新添加或修改的文件上传到远程仓库时,要运用到新增档案及目录到 Repository 中 add commit
将新增的文件加入到 SVN 版本控制中,TortoiseSVN 会把准备要加入的档案及目录,勾选需要加入的文件。
按下 OK 后,您将会看到如下的讯息窗口:
这个 Add(增加)的动作并未真正的将档案放到 Repository 中。仅仅是告知 SVN 准备要在 Repository 中放入这些档案。 此时的文件状态为:
这些档案真正的放入到 Repository 中,空白处右键选择 SVN commit(提交) 紧接着,您将会看到如下的窗口出现:
在这里可以清楚地了解到哪些档案要被 commit 到 repository(版本库)中。同样的,如果您有档案不想在这个时候 commit 到 Repository,您可以取消选取的档案,这样他们就不会被 commit 到 Repository 中。在"信息"文本框中可以写入对本次 commit 的说明。
点击"确认"后完成 commit 动作,然后您可以到 runoob 目录中,确定是否所有的档案 icon 都有如下的绿色勾勾在上面,这样代表您的档案都正确无误的到 repository 中。
6.结语
在本篇文章中重点讲解了SVN的相关基本操作,运用SVN可以进行代码、文件的版本控制,现阶段由于GIT的功能性更加完善,SVN逐渐退出了代码的版本控制,现多用于部门工作文件的存储,如设计文档、接口文档等,要掌握TortoiseSVN 的基础使用。