【Java EE 学习 43】【SVN版本控制工具】【CVS版本控制工具】
一、SVN
SVN服务器下载地址:https://subversion.apache.org/
1.什么是版本控制:版本控制是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订系统的系统。
2.没有版本控制会发生哪些糟糕的情况:
(1)代码管理混乱
(2)备份多个版本,占用磁盘空间的大
(3)解决代码冲突困难
(4)容易引发bug
(5)难于追溯问题代码的修改人和修改时间
(6)难于恢复到以前正确的版本
(7)无法进行权限控制
(8)项目版本发布困难
3.SVN简介:SVN(Subversion)是今年来崛起的版本控制工具,在当前的开源项目中(J2EE),几乎95%以上的项目都用到了SVN。Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制系统CVS,在CVS的功能的基础上有很多的提升同时也能很好的解决CVS系统的一些不足之处。
4.SVN工作原理示意图
5.SVN服务器的工作方式
(1)独立服务器方式:svnserve
(2)借助Apache方式:mod_dav_svn
6.SVN版本数据存储方式:
(1)BDB(Berkeley DB):数据库方式
(2)FSFS:文件系统方式(推荐)
7.Subversion(SVN)组件
(1)服务器组件
* svnadmin:用来调整和修正SVN档案库的工具
* svnserve:一个独立的服务器程序,可以作为服务器行程执行,或是被SSH启动;另一个让你的档案库在网络上可供其他人存取的方法。
(2)客户端组件
* svn:命令行客户端程序,这是用来管理数据的主要工具
8.SVN基本交互流程示意图
二、SVN的使用
1.建立仓库:svnadmin create 仓库的路径,例:D:\repertory\svn>svnadmin create ./kdyzm
该句命令的作用是在当前文件夹下建立仓库,名称为kdyzm,具体路径为:D:\repertory\svn\kdyzm
2.启动SVN服务器:
(1)单仓库启动方法:D:\repertory\svn>svnserve -d -r ./kdyzm
该命令的作用是启动当前目录下的kdyzm仓库,注意,只启动这一个仓库。
-d:后台启动
-r:指定仓库的目录
启动仓库之后光标会不断闪烁,但是没有任何输出,如果想要关闭仓库,只需要将命令行窗口关闭即可。
(2)将所有仓库启动的方法:D:\repertory\svn>svnserve -d -r D:\repertory\svn
即不指定具体的仓库,但是将仓库上一级目录作为指定目录
。
3.将SVN写入windows服务的方法:
命令行中执行下面的命令:
sc create SVN-Service binpath= "D:\ProgramFiles\SVN\bin\svnserve.exe --service -r D:\repertory\svn" displayname= "SVN-Service" start= auto depend= Tcpip
上面的命令中的红色部分表示需要根据实际情况进行修改的。
这样就将SVN写入windows服务中了,通过命令services.msc命令可以查看响应的服务。
如果想要删除该服务,则需要使用下面的命令:
sc delete SVN-Service
其中SVN-Service是服务名。
需要注意的是上面的命令不是SVN的命令,而是windows中的命令。
如果删除之后还想再创建一个新的服务,则可能会出现” 指定的服务已标记为删除。“的提示,出现这种提示的时候,将服务关闭掉这时候服务会自动删除,然后再使用该命令创建新服务即可。
4.仓库下的conf文件夹中三个文件的作用
(1)svnserve.conf :定义所有认证和授权策略
(2)passwd : 存放项目成员账户信息
(3)authz : 主要是做复杂的群组权限控制
5.Subversion客户端命令
客户端命令都使用snv命令完成
svn checkout 从版本库取出一个工作拷贝
svn commit 将改动的文件提交到版本库
svn update 更新你的工作拷贝
svn add 向版本库中添加新文件
svn delete 从版本库中删除文件
svn revert 取消所有的本地编辑
svn info 显示本地或者远程条目的信息
svn list 列出版本库目录的条目
svn status 查看当前工作区状态
svn help 获取帮助信息
6.Subversion目录规范
规定版本库中需要有三个顶级目录
/trunk 存放开发的“主线”
/branches 存放支线副本
/tags 存放标签副本
三、SVN命令行操作示例
1.创建版本库略,假设已经创建好,为/svn/kdyzm
2.客户端使用checkout命令从服务器上取出一份工作拷贝
svn checkout svn://localhost/kdyzm
注意,这里本来应当加上端口号3690,但是由于默认端口号就是它,而且使用的svn协议会自动试探该端口号,所以不加端口号也能够正常访问。
3.向版本库中添加文件
D:\client\svn\kdyzm>svn add readme.txt
3.提交到服务器
D:\client\svn\kdyzm>svn --message "提交readme.txt" commit
出错了,暂且修改服务器配置文件,使得匿名用户能够有rw的权限:
在svnserve.conf文件中修改配置:
anon-access = write
不需要重新启动服务器,直接重试,重试成功。
4.新建文件夹,在该文件夹中将版本库中的项目checkout出来,发现readme在其中。
5.update命令获取最新版本库内容
D:\client\svn\qyzr\kdyzm>svn update
6.delete命令删除指定的文件
D:\client\svn\qyzr\kdyzm>svn delete readme.txt
7.恢复删除的文件
D:\client\svn\qyzr\kdyzm>svn revert readme.txt
注意能恢复的前提是还没有提交,也就是说没有使用commit命令提交。
8.删除之后提交
这时候,如果再有用户检出,则不再有readme.txt文件
三、Tortoisesvn
1.Tortoisesvn是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费。
TortoiseSVN是Subversion的Windows扩展。它使你避免接触Subversion枯燥而且不方便的Commond Line。它完全嵌入Winodws Explorer,使用的时候只需要在正常的窗口中右键操作就可以了。
2.TortoiseSVN下载地址:http://tortoisesvn.net/downloads.html
3.TortoiseSVN图标介绍:
4.注意事项:.svn这个隐藏目录记录着两个关键的信息:工作文件的基准版本和一个本地副本最后更新的时间戳。千万不要手工修改或者删除这个.svn隐藏目录和里面的文件!!否则将会导致你本地的工作拷贝(静态视图)被破坏,无法再进行操作。
四、SVN权限管理
1.为了强制用户登陆访问,必须对SVN进行权限管理
(1)在svnserve.conf文件中,将字段anon-access = read的注释去掉,并且改成anon-acess = none,表示匿名用户没有任何访问权限,包括checkout
(2)在svnserve.conf文件中,将字段auth-access = write的注释去掉,表示通过身份认证的用户有权限写入服务器。
(3)在svnserve.conf文件中,将字段password-db = passwd的注释去掉,表示passwd文件生效,并且作为用户认证的数据库。
(3)在svnserve.conf文件中,将字段authz-db = authz的注释去掉,表示authz文件生效,并且作为权限认证的数据库。
2.做完1的准备工作之后,在passwd文件中配置新用户
方法:键值对的方式,username=password
例如:zhangsan=root
lisi=root
这样就创建了两个用户,密码都是root
3.做完2的准备工作之后,在authz文件中配置权限
配置方法见示例。
主要分为用户组权限管理和针对一个用户的权限管理
还有针对某个文件或者目录的权限管理
4.如何取消保存的认证消息(重要)
右键->TortoiseSVN->settings->Saved data->Authentication Data->clear all(或clear)
五、Eclipse和SVN整合
1.SVN在Eclipse中的安装地址:http://subclipse.tigris.org/update_1.10.x
离线安装包下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
2.具体使用方法自行整理
六、SVN和Apache整合
整合的目的:能够在浏览器上访问版本库。并通过浏览器上的URL地址检出项目。
参考文章:http://blog.csdn.net/tcpipstack/article/details/8683961
1.首先安装好Apache软件,Apache软件下载地址:http://httpd.apache.org/,由于Apache已经不再提供.exe安装包,所以要在Apache官方网站推荐的网站下载指定版本的软件。
2.打开apache安装目录下的%Apache_HOME%/conf/httpd.conf配置文件,在该配置文件中进行修改
(1)首先将%SVN_HOME%/bin目录下的mod_dav_svn.so和mod_authz_svn.so 两个文件复制到Apache服务器下的modules文件夹下。
(2)修改%Apache_HOME%/conf/httpd.conf文件
将 LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
这两行注释放开
(3) 在文件末尾添加如下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(4)使用htpasswd命令(Apache目录下的bin文件夹中的命令)对用户名和密码加密并生成加密文件。
htpasswd.exe -cb passwd.apache zhangsan root
htpasswd.exe -b passwd.apache lisi root
这里添加了zhangsan和lisi两个用户并且都对密码进行了加密,加密后的内容在passwd.apache文件中。密码为root
将加密后的文件passwd.apache复制到版本库中的conf文件夹中。
(4)接着修改%Apache_HOME%/conf/httpd.conf文件,在文件最后添加如下内容
<location /svn> #虚拟目录设置
DAV svn #告诉Apache服务器哪个模块负责SVN的
SVNListParentPath on #列出SVNParentPath路径下的所有版本库
SVNParentPath D:\repertory\svn #指出版本库所在的文件夹路径
AuthType Basic #使用基本验证方法,比如用户名、密码对
AuthName "Subversion repositories" #制定登陆提示内容
AuthUserFile D:\repertory\svn\kdyzm\conf\passwd.apache #认证文件所在的位置
AuthzSVNAccessFile D:\repertory\svn\kdyzm\conf\authz #权限管理文件所在的位置
Require valid-user #指示只有通过密码验证才能访问
</location>
(5)重启Apache服务器
(6)在浏览器上输入:http://localhost/svn访问
(7)注意事项:所有的配置都需要顶格写;最重要的配置在第(4)部分。
3.验证结果:
最后一张图显示了服务器上有两个版本库,名字分别是kdyzm和qyzr
七、CVS
该技术现在已经使用的不是很多,略。
【Java EE 学习 43】【SVN版本控制工具】【CVS版本控制工具】的更多相关文章
- Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库
参考: https://my.oschina.net/gaussik/blog/513444 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 ...
- Java EE 学习(5):IDEA + maven + spring 搭建 web(1)
参考:http://www.cnblogs.com/lonelyxmas/p/5397422.html http://www.ctolib.com/docs-IntelliJ-IDEA-c--1590 ...
- Java EE 学习(4):IDEA + maven 搭建 web(2)
参考:http://www.bubuko.com/infodetail-1855067.html 现使用 Maven 创建项目:本节接Java EE 学习(3):IDEA + maven 搭建 web ...
- Java EE学习——Quartz的Cron表达式
经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比 ...
- Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...
- Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...
- Java EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring
参考:https://my.oschina.net/gaussik/blog/513353 注:此文承接上一文:Java EE 学习(5):IDEA + maven + spring 搭建 web(1 ...
- 【Java EE 学习 80 上】【WebService】
一.WebService概述 什么是WebService,顾名思义,就是基于Web的服务,它使用Http方式接收和响应外部系统的某种请求,从而实现远程调用.WebService实际上就是依据某些标准, ...
- 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】
之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...
随机推荐
- 前端HTML-CSS规范
目录 HTML 语法 HTML5 doctype 语言属性(Language attribute) 字符编码 IE 兼容模式 引入 CSS 和 JavaScript 文件 实用为王 属性顺序 布尔(b ...
- 根据浏览器显示界面大小变换,替换css文件方法
在1024屏幕下,选择适配1024屏幕的css文件, 在大于1024屏幕下,选择适配大屏幕的css文件. 在html中的head标签中引用css文件时,加入media属性. 例: <link r ...
- Java的多线程机制系列:(一)总述及基础概念
前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...
- [JavaEE]设计模式之SOLID原则
1. S The Single Responsibility Principle 单一责任原则 当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THA ...
- JavaScript中的正则表达式(终结篇)
JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...
- thinkphp 3.2与phpexcel
thinkphp版本:3.2 1.在http://phpexcel.codeplex.com/下载最新PHPExcel 2.把Classes目录下的文件(PHPExcel.php和PHPExcel文件 ...
- mysql GET DIAGNOSTICS 语法
MySQL 5.6 提供了 get diagnostic 语句来获取错误缓冲区的内容,然后把这些内容输出到不同范围域的变量里,以便我们后续灵活操作 语法如下: GET [CURRENT] DIAGNO ...
- C语言基础(2)-常量
常量就是在程序运行中不可变化的量. #define #define MAX 100 定义了一个常量名字叫MAX,值是100,用#define定义的常量一般用大写字母. #define是一个预编译指令, ...
- HDU 1003 maxsum
#include<iostream> #include<vector> using namespace std; typedef struct { int maxsum; in ...
- UIScrollView的代理(delegate)
很多时候,我们想在UIScrollView正在滚动 或 滚动到某个位置 或者 停止滚动 时做一些特定的操作 要想完成上述功能,前提条件就是能够监听到UIScrollView的整个滚动过程 当UIScr ...