SVN学习笔记 - SVN的简介和使用

SVN简介

版本控制(Revision control

最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

Subversion

SVN全称Subversion,是一款实现版本控制的工具,也成为版本控制器;

SVNApache软件基金会组织下的一个项目;

SVN的优点

①目录版本控制

CVS 只能追踪单个文件的历史,但是 Subversion 实现了一个“虚拟”文件系统,可以追踪整个目录树的修改,文件和目录都是版本控制的,结果就是可以在客户端对文件和目录执行移动和复制命令。

②原子提交

提交要么完全进入版本库,要么一点都没有,这允许开发者以一个逻辑块提交修改。

③版本控制的元数据

每个文件和目录都有一组附加的“属性”,你可以发明和保存任意的键/值对,属性也会像文件内容一样被纳入版本控制。

④可选的网络层

Subversion 在版本库访问方面有一个抽象概念,利于人们去实现新的网络机制,Subversion 的“高级”服务器是 Apache 网络服务器的一个模块,使用 HTTP 的变种协议 WebDAV/DeltaV 通讯,这给了 Subversion 在稳定性和交互性方面很大的好处,可以直接使用服务器的特性,例如认证、授权、传输压缩和版本库浏览等等。也有一个轻型的,单独运行的 Subversion 服务器,这个服务器使用自己的协议,可以轻松的用 SSH 封装。

⑤一致的数据处理

Subversion 使用二进制文件差异算法展现文件的区别,对于文本(人类可读)和二进制(人类不可读)文件具备一致的操作方式,两种类型的文件都压缩存放在版本库中,差异在网络上双向传递。

⑥高效的分支和标签

分支与标签的代价不与工程的大小成比例,Subversion 建立分支与标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间,以及很小的版本库空间

SVN的原理

SVN采取客户端/服务器模式——在服务器的版本库中保存项目文件的各个版本,所有参与协同开发的程序员在自己本地电脑上保存一个工作副本。SVN 支持程序员将本地副本更新到服务器端的最新版本,也支持将本地副本的最新改变更新到服务器端,而且后面的更新不会覆盖前面的更新,而是作为一个新的版本被保存下来——SVN甚至支持将本地工作副本恢复为服务器端保存的某一个历史版本。

SVN的基本操作

①检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。

②更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或修改公共文件之前执行一次。

③提交(commit):将本地修改提交到服务器端。通常每天下班前或每实现一个功能、完成一个模块时执行一次。

SVN的安装

SVN服务器的安装

这里安装的版本是VisualSVN-Server-3.5.0-x64.msi

1)双击启动安装程序,如下图:

2)点击“Next”,勾选“I accept ...”,如下图:

3)点击“Next”,默认选择的即可,第一项是安装VisualSVN Server以及控制台,最后一项是自动加入环境变量,如下图:

4)点击“Next”,选择Standard Edition(标准版),如下图:

5)点击“Standard Edition”,选择安装路径(Location)和代码库(Repositories)的位置,Server PortSVN服务器端口号)如下图:

一般SVN服务器默认端口是3690


6)点击“Next”,进入确认安装界面,点击“Install”开始安装,如下图:

7)安装中,如下图:

8)点击“Finish”,安装完成,如下图:

Subscribe for release notifications via email or RSS:订阅通过电子邮件或RSS发布通知;

Start visualSVN server manager:启动visualSVN服务器管理器;


9)测试是否安装成功,如下图,即为安装成功:

SVN安装完成后,会自动在环境变量中配置SVNbin目录,在cmd中执行svn --version进行验证;


注册Windows服务

注:

a)将SVN 服务端程序注册为 Windows 服务,就可以让SVN 服务随系统一起启动,克服了命令行方式的不足。

b)注册 Windows 服务需要利用 XP2000 以上系统自带工具 Service Control,执行文件是 sc.exe,注意这个命令不是 SVN 的命令。

1)执行注册服务的命令

以管理员身份运行cmd,执行下面的命令;

命令格式:


binpath 组成结构说明:


版本库目录说明:

示例:

sc create MySVNService binpath= "E:\develop_soft\VisualSVNServer\bin\svnserve.exe --service -r E:\SvnRepositories" start= auto depend= Tcpip

注:MySVNService为服务名;

如下图为注册成功:


2)启动服务

方式1

右键“我的电脑” ---> “管理” ---> “服务和应用程序” ---> “服务”,找到MySVNService,右键“启动”即可;

方式2

命令启动格式:sc start 服务名

示例:sc start MySVNService

3)失败处理

检测:打开命令行窗口运行 netstat an 查看 3690 端口是否被监听

●如果启动失败,那很有可能是 binpath 中的内容有错误,此时只能将已经创建

的服务删除,重新创建。

●删除服务之前,最好先停止服务。停止服务的命令格式如下:

格式:sc stop 服务名

示例:sc stop MySVNService

●删除服务的命令格式如下:

格式 sc delete 服务名

举例 sc delete MySVNService

注:删除、启动、停止服务同样需要管理员权限

SVN的用户、分组

创建用户

a)打开VisualSVN Server,选择“Users”,右键“新建”,选择“User”,如下图:

2)输入用户名,密码,确认密码,点击“OK”,完成创建;

创建分组

a)打开VisualSVN Server,选择“Groups”,右键“新建”,选择“Group”,如下图:

2)输入分组名,点击“Add..”,选择该分组的用户,点击“OK”即可;

EclipseSVN的使用

Eclipse分享项目到SVN

1)选中项目名,右键选择“Team”,选择“Share Project”,选择“SVN”,点击“Next”,如下图:

2)如下图,选择“创建新的资源库位置”,如果有资源库位置了,选择下面的一个,点击“Next”;

3)如下图,填写版本库的URL,点击“Next”;

4)选择上传到SVN上的文件名,使用默认就好,这里不用做变动,点击“Next”;

5)填写注释,不填也可以,点击“Finish”即可;

6)选择项目名,右键选择“Team”,点击“提交”,选择需要提交的文件,点击“OK”完成提交,如下图:

SVN上检出项目到Eclipse

1)在Project Explorer视图空白处,右键选择“Import...”,输入“SVN”,查找到“从SVN检出项目”,点击“Next”,如下图:

2)选择版本库URL,点击“Next”;

3)选择要检出的项目,点击“Next”;

4)编辑检出的项目名,如果不需要修改,点击“Next”;

5)选择检出的工作空间,如果不需要改动,默认使用的是当前Eclipse的工作空间,点击“Finish”;

更新提交

提交:选择项目或需要上传文件右键Team---> “提交”;

更新:选择项目或需要上传文件右键Team---> “更新”;

冲突

冲突情况

当提交文件时,如果该文件的版本在svn服务器中不是最新的版本,那么提交时就会出现下面的提示“版本过时”;

这时执行“更新操作”,出现如下的情况:

1:

2

1是该情况时的目录结构,图2是该情况时的文件内容;

1

index.jsp.mine:表示提交时的文件;

index.jsp.r3:表示提交时,该文件的上个版本的文件;

index.jsp.r4:表示提交时,当前svn服务器中最新的版本;

说明:rx表示版本号,x大的是服务器中最新的版本;

2

<<<<<<<<  .mine

xxxx...

========

这部分内容是提交时的文件内容;

========

xxx...

>>>>>>>> .r4

这部分内容是svn服务器上最新的内容;

冲突解决

a)选中要解决的文件,右键“Team---> “编辑冲突”,如下图:

b)编辑完冲突,保存左侧的文件,选择解决的文件,右键“Team---> “标记为解决”,如下图:

c)点击“OK”即可,这时,之前产生的三个文件自动删除,剩下的文件时最新的版本,如下图:

权限

权限是给开发人员分配在svn中创建不同身份、权限的用户,这样在开发人员检出、提交、更新时,通过分配给开发人员的svn用户权限来做限制;

注:svn服务器的用户创建参看前面“SVN的用户、分组”这部分内容;

时光机

时光机其实就是查看历史版本,如果需要某个历史版本,可以回退到某个历史版本;

a)选择需要查看历史版本的文件或项目 ---> 右键“Team---> “显示资源历史记录”,如下图:

2)选择需要回退到的版本,右键“获取内容”即可;

附录

SVN Server端口号的修改

1)基于svnserve的,默认端口为3690,修改方法如下:

通过svnserve -d -r d:\svn来提供服务 (假设d:\svn为你的版本库所在目录)为svnserve 加上--listen-port参数,比如svnserve -d -r d:\svn --listen-port 81(注:--listen-port中间无隔);

2)基于Apache的,默认端口为Apache的默认端口80,修改方法如下:

通过Apache来提供服务,在httpd.conf中,查找Listen 80,将80修改为你想要的端口;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章