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 版本库的根目录

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版本控制系统的一个免费开源客户端,不需要为使用它而付费。

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=解压缩路径
1、从官网下载site-1.6.13.zip文件,网址是:subclipse.tigris.org,2、从中解压出features与plugins文件夹,复制到E:\MyEclipse\myPlugin\svn里面,其它的*.xml文件不要。3、在E:\MyEclipse\MyEclipse8.5\dropins下新建文件svn.link,内容是:path=E:\MyEclipse\myPlugin\svn 保存。4、删除E:\MyEclipse\MyEclipse8.5\configuration\org.eclipse.update文件夹5、重启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 svn

项目版本库路径

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值