SVN版本控制

首先在这里特别感谢Ben Collins-Sussuman,Brian W,Fitzpatrick 和C. Michael Pilato 还有Stefan Küng
Lübbe Onken,Simon Large

谢谢他们的写出那么好的书。。。谢谢
现在我们就开始Subversion的使用与介绍。(个人感觉Eclipse对SVN的支持很不好,上传和反应速度很慢,所以这里就不介绍有关Eclipse的SVN插件

在这里我们主要是对Subversion 1.6的介绍

下面是我机器上的TortoiseSVN Server and Client

 

“It is important not to let the perfect become the enemy of the good, even
when you can agree on what perfect is. Doubly so when you can't. As unpleasant
as it is to be trapped by past mistakes, you can't make any progress
by being afraid of your own shadow during design.”
                                                                                                           —Greg Hudson

当你相信完美的时候,最为重要的是让完美变得有缺陷。当然你是不会这样做的。不情愿被困难所阻碍,总的害怕遇到阻碍而在设计中隐藏自己的错误的人,是不会进步的。

                                                                                                            —Greg Hudson

下面来分析一下CVS和SVN的区别:

版本化的目录:

CVS只记录单个文件的历史,但是Subversion实现了一个可以跟踪目录树更改“虚拟”版本化的文件系统,文件和目录都是有版本的。

真实的版本历史:

因为CVS只记录单个文件的版本,对于拷贝和改名这些文件经常发生的操作,不会改变一个目录的内容,在CVS中并不支持。在CVS里尼也不可以用一个完全不同的文件覆盖原来的同名文件而又不继承原来文件的历史。通过Subversion,你可以对文件或是目录进行增加,拷贝和改名操作,也可以新增一个具有干净历史的文件

可选的网路层:

Subversion 可以与Apache结合,通过网路来进行管理和控制。

二进制保存:

Subversion用的是二进制保存,对于SVN数据就是二进制数据,都是一样的,而CVS却不同

可修改行:

Subversion没有历史负担,它由一系列良好的共享C库实现,具有定义良好的API,这使得Subversion非常容易维护

下面是Subversion的框架结构图

 

下面是SVN的CommandLine(cmd)的具体target(任务)

svn
客户端命令行

svnversion
报告工作拷贝状态

svnlook
检查版本库的工具

svnadmin
建立修改版本库工具

现在基本上都用的是可视化的,在这里多Command Line 仅仅这些介绍

好了 那么我们现在就尝试一下SVN吧。

1.创建一个文件夹名字为SVNTest(服务器装好了的话我们会出现如下图)

 

 2.点击右键点中文件夹,出现如下图
 创建一个Repository 资源库,如果成功的话,那么这个就是本地的Repository(由于是单机操作,现在无法演示远程SVN)

3.好了我们开始上传东西吧,如果出现下图的的话,上传成功

3.1第一步点击文件夹右键,出现下面的提示,然后点击

 3.2第二步对应SVN文件夹,也就是我们刚刚创建的SVN文件夹,在这里是SVNTest

3.3第三步是点击OK和写Message了,点完了,会出现面子的画面

 好了我们的文件上传成功了,那然后嗯?看看我们的文件呗,如下图

 


 

还有些常用的命令

Update ----------------------------------------------------更新操作(更新服务上的最新版本)

Commit----------------------------------------------------提交操作(向服务器上提交本地版本)

Show log--------------------------------------------------查看版本(个人感觉很强大,可以综合干很多事情,比如revision)

Diff---------------------------------------------------------很服务器版本做比较

Update to revision----------------------------------------更新到一起的版本(基本不用,除非有很大的改动)

Repo-browser---------------------------------------------查看服务器上的东西

Rename----------------------------------------------------更改名字

Delete------------------------------------------------------删除路径或文件

Add--------------------------------------------------------添加路径

Export-----------------------------------------------------导出( 不是SVN文件)

import-----------------------------------------------------载入到服务器

check-out--------------------------------------------------导出(是SVN文件)

check-in----------------------------------------------------同import(不过没有这个标签,但是一般都这么说)

clean up----------------------------------------------------清理缓存

Merge------------------------------------------------------合并矛盾(一般不用,用的话一般和Commit连用)、

Branch-tag-------------------------------------------------分组

Get-lock----------------------------------------------------上锁

Release-lock-----------------------------------------------放锁

好了基本也就这些了,SVN和别的版本控制软件都差不多,个人感觉这个比较简单,而且速度还快,容易上手。

希望我这篇文章能给大家帮助......

感谢你阅读。