day36_Spring学习笔记_04_SVN
2018-08-11 12:40
363 查看
一、SVN
1.1、版本控制
1.1.1、什么版本控制?
版本控制(Revision Control):是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干
文件内容变化,以便将来查阅特定版本修订情况的系统。也是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
为什么学习版本控制?硬盘是否坏过。根据
经验法则再加上
墨菲定理,坏事情往往都发生在最重要的时刻。
通过
文档控制(documentation control),能记录任何工程专案内各个模组的改动历程,并为每次改动编上序号。
1.1.2、版本控制软件
CVS(Concurrent Versions System)代表协作版本系统或者并发版本系统,是一种版本控制系统,方便软件的开发和使用者协同工作。VSS(Visual Source Safe)只能在windows下,作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责项目文件的管理。
Git是用于Linux内核开发的版本控制工具。它采用了
分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的
合并跟踪(merge tracing)能力。
SVN(Subversion),是一个开放源代码的版本控制系统,采用了分支管理系统,它的设计目标就是取代CVS。
1.2、SVN的特点
统一的版本号。CVS是对每个文件顺序编排版本号,在某一时间各文件的版本号各不相同。而Subversion下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
重命名、复制、删除文件等动作都保存在版本历史记录当中。
对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
分支的开销非常小。
优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。
支持元数据(Metadata)管理。每个目录或文件都可以定义属性(Property),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内。
支持 FSFS 和 Berkeley DB两种资料库格式。
不足:只能设置目录的访问权限,无法设置单个文件的访问权限。
1.3、SVN的体系结构
1.4、安装SVN
版本我一般喜欢安装最新版本的软件。
测试安装
检查path系统环境变量
1.5、创建仓库
命令格式:svnadmin create 路径仓库目录结构
注意:
创建仓库时,目录必须是空的,即要新建文件夹
1.6、SVN服务器启动
命令格式:svnserve -d -r 仓库的路径-d 后台执行
-r 版本库的根目录
SVN服务器启动时,指定“仓库路径”不同,就会分成
多仓库和
单仓库。
多仓库【掌握】
启动:svnserve -d -r 仓库父目录,表示启动的是多仓库
例如:svnserve -d -r D:\learn\JavaWeb\repository\svn
访问:
svn://localhost:3690/bbs
单仓库【了解】
启动:svnserve -d -r 仓库的根,表示启动的是单仓库
例如:svnserve -d -r D:\learn\JavaWeb\repository\svn\bbs
访问:
svn://localhost:3690
每次启动SVN服务器都要输入很多命令,太麻烦了,有没有解决办法?
有,我们可以将操作注册成操作系统的“服务”,我们的电脑开机时SVN服务器就启动了。
1、在“运行”中输入 services.msc 打开“服务”
2、注册“服务”
前提:必须以管理员身份打开命令提示符。
命令格式:sc create svn binpath= "D:\learn\JavaWeb\Subversion\Subversion\bin\svnserve.exe --service -r D:\learn\JavaWeb\repository\svn" displayname= "SVN-Service" start= auto depend= Tcpip
3、删除“服务”
命令格式:sc delete svn
4、将SVN-Service的启动类型设置为
手动后,就可以手动启动或停止“服务”了
测试手动开启SVN和手动停止SVN:
1.7、操作【掌握:思想】
1.7.1、checkout
命令格式:svn checkout 服务器地址 下载地址1.7.2、commit
命令格式:svn commit 资源问题1:尚未纳入版本控制
解决办法:使用add子命令,将要提交的文件添加到本地版本库
再次提交
问题2:没有编写日志
解决办法:采用 -m 参数设置日志信息
问题3:没有权限,认证失败
解决办法:修改权限,设置匿名访问
先打开文件:D:\learn\JavaWeb\repository\svn\bbs\conf\svnserve.conf
再次提交,没有问题了
1.7.3、update
命令格式:svn update
1.8、图形化:TortoiseSVN 安装
安装成功之后,以后所有的操作都是“右键”
若在TortoiseSVN的简单使用中若出现如下警告,说明SVN服务器是关闭的,需要我们手动打开SVN服务器(因为我们设置的是手动启动和关闭SVN服务器):
警告如下:
命令格式:net start svn
解决问题成功截图:
1.9、svn权限
先找到仓库,配置SVN权限需要3个配置文件,位置:D:\learn\JavaWeb\repository\svn\bbs\conf核心配置文件:svnserve.conf
关闭匿名访问,开启权限认证
确定账号配置文件位置
确定权限认证配置文件位置
账号配置文件:passwd(一行表示一个账号,账号由用户名和密码组成,使用等号分隔)
权限认证配置文件:authz
配置组,配置格式:组名 = 用户1, 用户2, …
权限认证细节配置
多仓库 [bbs:/] --> 确定仓库名称。[bbs:/doc] 表示给bbs仓库的doc目录配置权限认证 @itheima = rw --> 给itheima组设置权限,取值:read ('r') ,read-write ('rw') ,or no access ('') user3 = r --> 给user3 指定权限 *= --> 其他用户没有权限
单仓库 [/] --> 表示单仓库的根。[/doc] 表示单仓库中的doc目录
1.10、TortoiseSVN 常见图标
1.11、myeclipse svn 插件【很重要】
1.11.1、安装插件
如果3个都不能使用,直接换eclipse。
安装方式1:直接复制
eclipse 插件规范
eclipse 目录 -- features目录 -- plugins 目录
安装方式2:使用link文件
将插件解压到任意目录(不含中文、空格),在MyEclipse\MyEclipse 2017 CI\dropins目录添加一个link文件 文件名:自定义 文件扩展名:link 文件内容: path = 插件完整目录,需要指定到eclipse,即可以看到(features、plugins)这两个目录 例如: path = D:\\learn\\Java\\MyEclipse\\MyEclipse 2017 CI\\dropins\\svn\\eclipse 或者 path = D:/learn/Java/MyEclipse/MyEclipse 2017 CI/dropins/svn/eclipse
安装方式3:在线安装
在MyEcplise中点击Help --> Install from Site… --> Add… --> Location --> Next 等等
安装成功标志
1.11.2、myeclipse svn插件使用
1.12、svn 目录规范
trunk ,主线:用于存放程序整个进度
branches ,分支,例如:bug修复、特殊功能等
tags ,标签(版本),此目录下的内容不能修改
软件开发小图解示例:
相关文章推荐
- JavaWeb学习笔记-spring-04-ioc-bean装载
- spring学习笔记整理--04(配置Spring管理的bean的作用域、生命周期)
- Java 学习笔记04:Spring XML配置文件Bean
- Spring boot 学习笔记(04)—— 多环境配置(dev,test,pro)
- 【JavaEE学习笔记】Spring_04_SpringJDBC,模板模式
- Spring学习笔记(三)
- J2EE系列之Spring4学习笔记(六)--IOC详解(bean之间的关系,bean的作用范围)
- Spring学习笔记(九)-----事务管理(宣告式事务管理)
- spring和spring mvc父子容器--学习笔记
- Spring4第三讲学习笔记,依赖注入dependency injection
- spring boot学习笔记(5)springboot运行原理
- Spring学习笔记--IoC
- springboot学习笔记-1 第一个springboot示例
- SpringMVC + Spring + MyBatis 学习笔记:SpringMVC和Spring一同工作的时候,AOP事务管理不起作用的解决方法
- Spring2.5注解(标注)学习笔记(使用annotation代替XML)
- spring源码学习笔记-初始化(一)-概览
- [学习笔记]基于注解的spring3.0.x MVC学习笔记(八)
- java之最全面的spring学习笔记
- Spring学习笔记
- Spring学习笔记之方法注入