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修改为你想要的端口;
相关文章推荐
- SVN学习笔记 - SVN的简介和使用
- svn如何使用import目录作为工作拷贝+我的svn学习笔记
- 学习笔记 如何使用svnsync命令对SVN库进行备份
- (转)cocos2d-x学习笔记14:粒子系统1:简介&工具使用
- Java学习笔记——MySQL的安装使用以及SQL语法简介
- Docker学习笔记 — Compose简介、安装与简单使用
- 嵌入式学习笔记(17)——AVR单片机之头文件简介和使用
- Google SVN托管和使用学习笔记
- 【Gradle 简介】Gradle 构建编译工程学习笔记和使用总结
- Redis学习笔记一:redis简介及安装使用
- 【AwayPhysics学习笔记】:Away3D物理引擎的简介与使用
- Unity 学习笔记(1) -- Unity简介及简单使用
- springmvc学习笔记(简介及使用)
- SVN学习笔记1 -- 为什么要使用SVN
- html5学习笔记---03. Canvas简介,Canvas的使用方法
- svn如何使用import目录作为工作拷贝+我的svn学习笔记
- 学习笔记 SVN简易使用手册详解
- JavaScript学习笔记8-jQuery简介、jQuery使用详解、DOM对象与jQuery对象的转换与区别
- cocos2d-x学习笔记14:粒子系统1:简介&工具使用
- CMS视频学习笔记1:cms项目和使用技术简介