一、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版本控制工具】的更多相关文章

  1. Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库

    参考: https://my.oschina.net/gaussik/blog/513444 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 ...

  2. 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 ...

  3. Java EE 学习(4):IDEA + maven 搭建 web(2)

    参考:http://www.bubuko.com/infodetail-1855067.html 现使用 Maven 创建项目:本节接Java EE 学习(3):IDEA + maven 搭建 web ...

  4. Java EE学习——Quartz的Cron表达式

    经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比 ...

  5. Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...

  6. Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...

  7. Java EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring

    参考:https://my.oschina.net/gaussik/blog/513353 注:此文承接上一文:Java EE 学习(5):IDEA + maven + spring 搭建 web(1 ...

  8. 【Java EE 学习 80 上】【WebService】

    一.WebService概述 什么是WebService,顾名思义,就是基于Web的服务,它使用Http方式接收和响应外部系统的某种请求,从而实现远程调用.WebService实际上就是依据某些标准, ...

  9. 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】

    之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...

随机推荐

  1. iOS小知识点(非UI部分)

    1. _cmd 表示当前方法的@SEL指针, - (void)putString{} 对于这个函数_cmd 等效于@selector(putString)

  2. c# WebClient Get Post 方法

    public string GetData(string url) { string data; using (var client = new WebClient()) { using (var s ...

  3. ssh reverse tunnel

    ssh反向通道的可用场景之一:从外网访问内网的主机.所必须的是你需要一个有ssh登录权限的公网主机. 步骤如下(将内网主机称作A,公网ssh主机地址为hostP ): 1.在内网A上执行 :local ...

  4. [uva11722&&cogs1488]和朋友会面Joining with Friend

    几何概型,<训练指南>的题.分类讨论太神啦我不会,我只会萌萌哒的simpson强上~这里用正方形在y=x-w的左上方的面积减去在y=x+w左上方的面积就是两条直线之间的面积,然后切出来的每 ...

  5. 学习笔记——git

    恩没错,又是个新东西 使用Git提交文件到版本库有两步: 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区. 第二步:使用git commit提交更改,实际上就是把暂存区的 ...

  6. SSH--1

    package com.etc.action; import java.io.IOException; import java.io.PrintWriter; import java.util.Has ...

  7. python学习笔记-(十四)进程&协程

    一. 进程 1. 多进程multiprocessing multiprocessing包是Python中的多进程管理包,是一个跨平台版本的多进程模块.与threading.Thread类似,它可以利用 ...

  8. ecshop 后台分页功能

    Ecshop分页规则,分以下几个步骤 1.点击类别,获取第一页获取默认分类列表数据 2.点击“下一页”,采用ajax调取分页内容 实例分析(比如订单列表分页admin/order.php) 1.先写一 ...

  9. 10 件有关 JavaScript 让人费解的事情

    JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言, ...

  10. postgresql利用pg_upgrade升级数据库(从8.4升级到9.5)

    其他见:http://my.oschina.net/ensn/blog/636766 本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg ...