SVN版本控制

没有版本控制?
代码管理混乱
备份多个版本,占用磁盘空间大
解决代码冲突困难
容易引起BUG
难于追溯问题代码的修改人和修改时间
难于恢复至之前正确版本
没法进行权限控制
项目版本发布困难
什么是版本控制?
版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便未来查阅特定版本修订状况的系统。
SVN简介
Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有不少的提高同时也能较好的解决 CVS 系统的一些不足。
SVN服务器运行方式
独立服务器方式
svnserve
借助Apache方式
mod_dav_svn
SVN版本数据存储方式
BDB (Berkeley DB)
数据库方式
FSFS
文件方式 (推荐)
Subversion:是一种开放源码的全新版本控制系统。是新一代的版本控制工具,因为其优于CVS的一些特色,获得了愈来愈多人的关注和使用,支持可在本地访问或经过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、恢复和分支等功能,并且Subversion 还增长了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,全部这一切都使 Subversion 不只对传统的编程任务很是有用,同时也适于 Web 开发、图书创做和其余在传统方式下未采纳版本控制功能的领域。 程序员

Subversion 组件
服务器组件 (管理员使用)
svnadmin:用来调整和修正svn档案库的工具
svnserve:一个独立的服务器程序, 能够做为服务器行程执行, 或是被 SSH 启动; 另外一个让你的档案库在网络上可供其它人存取的方法.
客户端组件(用户使用)
svn:命令行客户端程序,这是用来管理数据的主要工具。
SVN 工做的的基本思路是这样的:在一台服务器上创建一个仓库,仓库里能够存放许多不一样项目的源程序。由仓库管理员统一管理这些源程序.这样,就好象只有一我的在 修改文件同样.避免了冲突.每一个用户在使用仓库以前,首先要把仓库里的项目文件下载到本地。用户作的任何修改首先都是在本地进行,而后用 SVN 命令进行提交,由 SVN仓库管理员统一 修改.这样就能够作到跟踪文件变化,冲突控制等等。
Subversion创建仓库
创建svn仓库
命令svnadmin create 仓库名称,如:
svnadmin create F:\software\repository\svn\itcast
Subversion启动
svn服务器启动
cmd命令行启动
svnserve -d –r 文档仓库路径
-d 后台执行
-r 版本库的根目录 web

Windows服务自动启动
利用xp、2000 以上的系统自带的工具service control,执行文件是sc.exe
sc create SVN-Service binpath= “F:\software\svn\bin\svnserve.exe –service -r F:\software\repository\svn” displayname= “SVN-Service” start= auto depend= Tcpip
Subversion权限配置
svn 仓库权限配置
svnserve.conf 定义全部认证和受权政策
passwd 存放项目成员账户信息
authz 主要是作复杂的群组权限控制
Svnserve.conf
anon-access
指明仓库匿名用户访问的权限,可选值(none:不能访问;read:匿名可读;write:匿
名可写),通常设置为none,避免匿名访问,出非你的项目为开源项目。
auth-access
指明被受权经过的用户的权限,可选值同上。
password-db
指定了被受权用户的用户名及密码的文件,能够在passwd 文件中设置用户名与密码。
authz-db
实现了以路径为基础的受权,也就是判断用户是否有操做对应路径的权限,在
Subversion 1.3 以后,svnserve 和Apache 同样均可以使用“authz-db”文件。数据库

passwd
默认在[users]下有两个被注释了的用户信息,可经过去掉注释或自
己增长一行用户信息。例如:
itcast = lengyu (前面是用户名,后面是密码)
Subversion客户端命令
svn经常使用命令
svn checkout -从版本库取出一个工做拷贝
svn commit -将改动的文件提交到版本库
svn update -更新你的工做拷贝
svn add-向版本库中添加新文件
svn delete-从版本库中删除文件
svn revert-取消全部的本地编辑
svn info-显示本地或远程条目的信息
svn list-列出版本库目录的条目
svn status-查看当前工做区状态
svn help-获取帮助信息
对于每个更新的项目开头都有一个表示所作动做的字符,这些字符有下面的意思:
A添加
D删除
U更新
C冲突
G合并
Subversion目录规范
建立三个顶级目录
/trunk 存放开发的“主线”
/branches 存放支线副本
/tags 存放标签副本
Subversion 提供了主线、分支管理技术,使得在软件开发中能够更方便、灵活的对项目的进度、版本的发布、版本的维护、软件功能的拓展与定制进行管理。
主线(trunk):一个项目创建时就存在,并伴随着项目的成长而不断的成长,直到项目彻底结束。
分支(branch):通常是指功能分支,例如:咱们的某个项目要添加一个模块,但这个模块又比较复杂,实现难度比较大。为了避免影响主线的稳定,咱们就能够建立一个功能分支来专门开发这个模块,当这个模块开发完成之后,并经过测试部门的各项测试,再合并到主线中去。再好比,咱们的交警 GPS 项目已经开发完成了,可是这个项目是给泉州交警作的,如今咱们又接到了一个交警项目,不过是要给厦门交警大队的。如今厦门交警大队要求咱们给他们定制一些功能。咱们又不想再主线上进行修改,这个时候,咱们也能够建立一个分支,并在这个分支上开发,这时是不会对主线形成影响的。等给厦门开发完成了之后,咱们发现,他们要求的有些功能其实很好,之后别的地方可能也须要一样的功能。这个时候咱们就能够根据咱们的须要,将有用的模块有选择的合并到主线中来。
标签(tag):标签和分支同样,也是一个目录,不过这个目录中通常存放的是发布的信息(固然咱们也能够只用分支,可是用标签更清楚明了一些)。仍是拿咱们的交警项目来举个例子:咱们的交警项目开发完成了之后,要拿给泉州交警大队用了,也就是要发布(release),假设这个版本叫作1.0.2。这个时候,咱们就要建立一个标签,当泉州交警大队用了三个月,发现了一个 BUG,咱们只须要签出这个标签中的代码(它和咱们刚提供给泉州交警大队时候的是如出一辙的),进行调试,并修正这个 BUG。而后再发布一个版本,假设叫作1.1.0,这个时候咱们就在建立一个 1.1.0的标签……
要注意,标签目录里面的代码,要进行严格的控制,除了修正 BUG 外,不能作任何其余的事情。
Tortoisesvn介绍
TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不须要为使用它而付费。apache

TortoiseSVN是 Subversion 的 Windows 扩展。它使你避免接触 Subversion 枯燥并且不方便的 Command Line。它彻底嵌入 Windows Explorer,使用时只需在正常的窗口里右键操做就能够了。
注意事项
注意:.svn这个隐藏目录记录着两项关键的信息: 工做文件的基准版本和一个本地副本最后更新的时间戳。千万不要手工修改或删除这个 .svn隐藏目录和里面的文件!!! 不然将会致使你本地的工做拷贝 (静态视图)被破坏,没法再进行操做。
SVN与Eclipse整合
SVN与Eclipse整合
下载SVN插件(http://subclipse.tigris.org)
咱们使用版本eclipse_svn_site-1.6.5.zip
解压到一个文件夹中
进入eclipse 安装目录中dropins目录并建立一个subclipse.link 的文本文件(文件名任意)。内容为:path=解压缩路径
一、从官网下载site-1.6.13.zip文件,网址是:subclipse.tigris.org, 二、从中解压出features与plugins文件夹,复制到E:\MyEclipse\myPlugin\svn里面,其它的*.xml文件不要。 三、在E:\MyEclipse\MyEclipse8.5\dropins下新建文件svn.link,内容是:path=E:\MyEclipse\myPlugin\svn 保存。 四、删除E:\MyEclipse\MyEclipse8.5\configuration\org.eclipse.update文件夹 五、重启myeclipse就一切正常了。
SVN与Apache整合
SVN与Apache整合
下载Apache(http://httpd.apache.org/download.cgi)
安装apache_2.2.14-win32-x86-no_ssl.msi
打开Apache安装目录下Apache2.2\conf\httpd.conf 配置文件:
将下列2行前方的#移除(第83 行):
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
并同时在上面两行下面增长如下两行(必定放在这个位置)
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
找到Subversion 安装目录下的如下两个文件
bin/mod_authz_svn.so
bin/mod_dav_svn.so
复制到Apache 安装目录下modules 目录中。
SVN与Apache整合
使用Apache 安装目录下的bin/htpasswd.exe 可执行文件来生成受权文件,第一次生成使用-cb 参数:
htpasswd -cb [filename] [username] [password]
例如:htpasswd -cb passwd.apache 用户名 密码 (其中用户名需为svn中添加的用户名)
将生成的passwd.apache 文件移动到SVN版本库中\conf 目录下
apache 安装目录下的conf\httpd.conf 文件的最后面加入:编程

配置虚拟目录

引用远程访问模块

DAV svnwindows

项目版本库路径

SVNPath F:/software/repository/svn/itcast安全

受权文件

AuthzSVNAccessFile F:/software/repository/svn/itcast/conf/authz服务器

全部用户都须要身份验证

Satisfy Any
Require valid-user网络

验证方式

AuthType Basic并发

项目的名称

AuthName “itcast”

用户文件

AuthUserFile F:/software/repository/svn/itcast/conf/passwd.apache

访问方式:
http://localhost/svn/itcast
使用SVN咱们应该?
常常更新:下降冲突的可能性
提交前需在本机测试经过:下降将问题代码传到版本库
提交时必定写备注:方便其余员工查看和本身之后恢复
对于不须要提交的文件不要提交到版本库
CVS 简介
CVS - Concurrent Versions System(并发版本管理系统)是一个版本控制管理系统,它是SVN出现以前最为普遍使用的一个版本控制系统。   CVS的优势就很少说了,总之没有它,早期的软件工程就基本没法实现,就没法凝聚广大程序员的力量。它在软件工程中的做用实在是无可比拟的。 一直到现今的版本控制的主流SVN出现以后,它才慢慢的逐步淡出咱们的视线。
CVSNT 界面说明
Server Information,用于查看服务器信息及一些简单的统计信息;
Respository configuration,配置CVS仓库,包括添加、删除等;
Server Setting,配置服务器运行的一些参数,诸如端口、加密、压缩等选项;
Capatiblity Options,有关兼容性的选项,在这里主要配置一个兼容非cvsnt客户端的版本响应为cvs 1.11.2;
Plugins,插件配置,安装完成能够不用管的~;
Advanced,安装完成后也不用管了;
About,在这里能够管理cvsnt服务的状态,中止或启动cvsnt和cvsnt lock服务。
CVSNT 仓库
建立仓库(Ropository)
安装完成后,打开 “开始”菜单——>“程序”——> “CVSNT”——> “CVSNT Control Panel” 程序 ,打开cvs管理窗口,选择“Ropository configuation”选项卡,单击“add”按钮添加仓库,location为仓库文件夹存放路径。选择一个预先存在的目录路径。Name会自动改成“/目录文件夹”! 这个名子也能够修改(仓库访问别名)。点击OK按钮,它会提示你“这个文件夹不是cvs仓库,是否初始化?”的英文提示。点击“是“。建立仓库完毕。
CVSNT 用户
使用WIN系统账户
CVSNT默认用户为windows系统用户,即在服务器上建立WIN系统用户(注意权限安全)便可,这样每一个仓库均可以使用服务器的系统用户登陆管理。
CVS 客户端使用
Eclipse中的使用
subversion软件下载安装
http://subversion.tigris.org
咱们使用版本Setup-Subversion-1.6.5.msi
Tortoisesvn下载安装
http://tortoisesvn.net/downloads
360安装卫士软件宝库
咱们安装版本TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi
下载CVS服务器
网址为:http://www.cvsnt.com/cvspro/,下载CVSNT 并安装,当前教学所使用的版本号为:  cvsnt-server-2.5.04.3510.msi