您的位置:首页 > 其它

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

2017-10-26 15:20 459 查看

SVN简介

版本控制(Revision control)

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

Subversion

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

SVN是Apache软件基金会组织下的一个项目;

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
Port(SVN服务器端口号)如下图:

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



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



7)安装中,如下图:



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

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

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



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

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



注册Windows服务

注:

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

b)注册 Windows
服务需要利用 XP、2000
以上系统自带工具 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”即可;





Eclipse中SVN的使用

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修改为你想要的端口;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: