svn基本操作
SVN教程:
全称为Apache Subversion 通常被缩写成svn,是一个开源版本控制系统。
在subversion管理系统中,文件目录可以超越时空,subversion将文件存放在中心版本管理库中,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到之前的版本了,并可以查看数据的更改细节,正因为如此,许多人将版本控制系统当做一台的时间机器;
SVN的作用:
使用SVN的目的有两个:
实现项目组中的资源共享;(别人可以获取到你写的代码,同样自己也可以获得到别人的代码)
实现资源文件的版本控制;
为什么要学svn,传统的工作有什么不足?
传统工作有什么不足:
无法及时获取到更新。
发送和接受文件工作量巨大。
对于之前版本的恢复较难,即使可以恢复,也会消耗大量时间。
一个文件由多人修改则会出现内容冲突问题,且难以确定具体时间和修改人。
文件服务方式和服务器有什么缺点?
空间大量浪费;
资源无法设定访问权限;
资源安全性很低;
发生冲突的资源无法自动合用;
SVN 和Git有什么区别?
SVN 的主要功能
SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器
SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。
功能有许多我就不一一列了,SVN大都采用图形界面操作,直观,上手快。
SVN 的优缺点
SVN对中文支持好,操作简单,使用没有难度,美工人员,产品人员,测试人员,实施人员都可轻松上手。使用界面统一,功能完善,操作方便。
Git的主要功能
Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅长的是程序代码的版本化管理。但是现在好像也支持SVN了,之前下载HBuilder插件是看到的。
Git的优缺点
对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。不支持中文,图形界面支持差,使用难度大。不易推广。
SVN 和 Git 哪个更适用于项目管理?
认为SVN更适用于项目管理, Git仅适用于代码管理。
一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。
SVN的体系结构:
SVN的三层结构:
客户层:提供两种方式图形界面和命令行,通过服务层提供api访问仓库层,通过DAV,SVN,LOCAL协议。
服务层:
DAV:通过互联网直接访问仓库层,通过Apache服务器进行访问;http://
SVN:通过svnserve访问svn://
local:通过文件操作访问file://
仓库层:
数据仓库可以由一个文件服务器充当,也可以有数据库进行充当;
教程笔记:
SVN的概述:
为什么使用subversion版本控制软件?
在多人协作开发的基础下,一个系统会受到多个人联合开发,而每个人都是单独工作的。
还有就是在远程开发的基础上,需要进行整合开发的时候。
另外遇到更新的版本不如之前的好,需要使用版本回退。
解决之道:
svn:软件配置管理
所谓的软件配置管理,实际就是对软件源代码进行控制和管理的。
cvs:元老级的产品
vss:入门级产品
ClearCase被IBM收购了,由它提供技术支持(就是得付费了)
SVN:主流产品
3.什么是SVN
SVN全称subversion.
SVN是近年觉醒的版本管理工具,是cvs的接班人,目前大多数公司都在使用SVN
特点:
操作简单,入门容易
可以跨平台操作(windows,linux,macOS);
支持版本回退功能。
4.如何获取SVN
它是C/S结构的软件,(分为客户端和服务端)
两者有不同的下载地址:
服务器端:名Visual SVN
客户端软件:tortoisesvn
SVN软件的安装:
1.svn工作流程:
一般是项目经理使用checkout 检出 svn服务器创建相关项目;
一般程序员第一次进入svn服务器都是使用checkout。
之后便是update对项目的更新。
commit(提交)对svn服务器进行管理;
新来的员工会得到服务器的地址,svn://服务器地址/项目名称,建立连接指令。
第一次连接需要使用checkout指令,更新指令到指令,之后便是使用update更新数据到本地,然后使用commit提交代码到svn。
2.服务器端的软件进行安装:
点击安装-》下一步-》下一步-》安装环境配置(第一个visualsvn具有可视化管理界面,第二个只有命令行操作,最后一个勾选,添加svn指令到系统环境变量中)
-》企业版需要购买授权,一般选用标准版-》设置location设置安装路径,第二个位置为repositories默认仓库,server port 设置八千以上的默认是443或8443。安装位置不能出现中文特殊字符,空格否则会使svn指令失去功效。
一般使用8443端口,443端口会被占用,选择使用安全链接。
3.svn客户端软件安装和使用:
1.获取软件安装包。(客户端分操作系统的位数)
运行软件安装包-》选择默认安装即可-》安装完毕重启计算机才会出现svn图标。-》右键可以看到安装的svn就发现软件已经安装成功了。
如需安装汉化包,需要先安装tortoisesvn再点击汉化包运行,安装之后,直接选择右键tortoisesvn选择setting选择常规(genaral)对应的语言即可。
使用客户端软件连接客户端服务器。
选择启动tortoisesvn-》版本浏览器-》输入svn服务器地址-》由于监管操作自动连接上-》检出;
SVN:使用详解:
1.检出checkout
链接到服务器端,更新服务器端的数据。checkout只在第一次链接是进行相关操作;之后使用update更新数据。
2.commit提交本地指令到服务器端。
提交的时候会弹出提交窗口欧,这里需要填写一些上传备注信息,这里是给自己看的,说明此次修改了那些内容。
下方会显示上传目录,就会显示提交目录。
3.新用户可以通过检出服务器端的数据到本地文件夹中(update更新)。commit提交(被修改过的文件)
4.项目经理只需要使用svn更新就能查看到更新的内容了。
svn图标集:
可以通过设置,图标集中查看图标的含义。
常规图标:
当客户端文件和服务器端的文件都是绿色√就说明文件同步。
当服务器文件出现冲突时会出现!
当服务器文件被删除时会出现红色×
当我们编写的文件已添加到提交队列,系统将显示提交蓝色+图标。
当我们编写的文件没有添加到上传队列时,系统将自动提示白色?图标。
当客户端文件有修改但有提交此时会提示!修改图标
当客户端文件设置只读是就会显示没有颜色的√
当服务器端数据锁定,客户端数据就会自动显示锁定图标。
客户端文件已忽略不需要自动上传,会自动显示忽略图标。
当有些文件不希望上传到svn服务器,应该将文件或该类型的文件添加至忽略列表。
有两种模式UML忽略此文件,UMLrepositories递归忽略;
SVN使用详解:
版本回退:
传统的版本更新:是将每一个版本单独的存储一个文件夹。
而在SVN中:它只会记录新增的内容,不会记录之前系统已经有了的。这是一种优势。
在SVN中实现回退功能:
选择tortoisesvn-》更新至版本。
可以根据日志回退,通过查看之前的备注信息回到相应的版本。
SVN中的版本冲突的问题:
后修改的内容会将前一个修改的内容覆盖。
解决办法:
合理分配项目开发时间,在修改同一个文件。
合理分配项目开发模块。
通过svn解决版本冲突问题:更新服务器数据到本地,
会在本地出现的多个冲突文件,删除多余的几个文件(进行整合),进行整合后再重新提交,即可重新解决版本冲突问题。
配置多仓库与权限控制:
1.配置多仓库:
在实际开发中,我们可能会同时开发多个项目,那么我们怎么能够进行过个项目管理监察呢?
通过svnserve监管仓库,但是监管命令只能监管某一个文件夹,而不能同时监管多个仓库。
可以通过监管webapp总目录监管所有仓库的目的;
svnserve -d(后台运行) -r(监管目录) webapp
如果访问不同的目录,可以通过直接svn://lovalhost/子目录
2.权限控制功能:
使用权限控制功能必须先开启权限功能。
在每一个仓库中,都会有一个conf文件夹,里面有三个文件
authz文件:授权文件
告诉哪些用户具有哪些权限
passwd文件:认证文件
标识当前svn系统中某个,具有哪些用户以及相应的密码;
默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件
svnseve.conf配置文件
开启步骤如下:
第一步:注释匿名用户的可读写权限。
#anon-access=write
第二步开启认证文件与授权文件;
passwd-db=passwd;
authz-db=authz
第三步:首先编写认证文件定义相关用户名和密码;
[user]
定义:
用户名=密码;
第四步:编写授权文件:
[groups]
组名=用户列表,使用逗号隔开
配置文件权限:
[项目名:/]
@组名:权限(rw)
*匿名用户=r;
svn服务的配置和管理:
1.配置自启动服务(之前需要在window dos中使用命令运行svn)
sc create SVNService binpath="D:\svn\bin\svnserve.exe--service -r D:/svnroot"vstart=suto
sc create 服务名称 binpath="svnserve.exe-service -r D:/svn/webapp" start=空格 auto;
创建系统服务,服务名SVNservice
打开运行使用管理员运行cmd
输入
sc create SVNService binpath="D:\svn\bin\svnserve.exe-service -r D:/svn/webapp" start= auto;
然后打开服务:启动该服务即可开启监管服务;
创建批处理文件:
net start SVNService
net stop SVNService
net delete SVNService
创建后缀名为.bat的文件在其中输入的命令会自动输入到cmd窗口;就可以启动停止删除服务了。
模拟真实开发环境:
一般开发人员将数据提交给仓库,而真正显示在web服务器上,所以需要媒介(沟子程序)完成将数据从仓库提交给web服务器
钩子程序
所谓钩子程序就是与一些版本库事件触发的程序,列如新修订版本的创建,或是未版本化属性的修改。
默认情况下,钩子的子目录(版本仓库/hooks)中包含各种版本库的钩子模板
post-commit.tmpl:事务完成时所触发的钩子程序。
钩子程序默认情况下可以采用批处理指令或shell指令来进行编写
3.通过批处理指令编写钩子程序时,需要做的操作。
1.设置svn服务器工作目录
设置服务器的svn路径:
SET SVN="D:\svn\bin\svn,exe"
2.指定web服务器的工作目录
SET DIR=“D:\server\apache\hedocs\shop”
3.通过update属性更新指令到DIR目录中
SVN update %DIR%
复制修改post-commit.tmpl后缀名为bat将上面的内容覆盖进去。
SVN扩展程序:
1.BAE云引擎;
BAE云引擎:百度推出的网络应用开发平台。基于BAE架构,使开发者不需要维护任何的服务器,只需要简单的上传应用程序,就可以为用户提供服务了。
2.如何使用BAE云引擎。
BAE地址:
通过百度账号申请bce的云引擎;
创建一个空间,点击复制在本地进行检出操作。
将赋值的内容放入版本库中,就可以完成检出操作,这个过程中需要接受服务验证(百度的用户名和管理密码)
使用提交会自动的进行提交到管理控制中心,去控制中心就能看到自己的内容发生更改需要手动发布。
这个版本有点老旧了,在bilibili上黑马程序员讲解。