目录
版本冲突(开发人员每天上班前更新自己的代码,旺财9:30提交,小强10:00提交)
什么是SVN?
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
SVN 官网:https://subversion.apache.org/
Github SVN 源码:https://github.com/apache/subversion
特点:
操作简单、入门简单、跨平台(MacOS 、Windows、Linux)操作 。
svn服务端
SVN是输入C/S服务类软件,有客户端和服务端。
SVN的服务端
Repository(源代码库):源代码统一存放的地方;
Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份;第一次连接服务器需要使用Checkout
Commit(提交):当你已经修改了代码,你就需要Commit到repository;
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更。Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认。
公司有多台服务器:Web服务器,数据库服务器,SVN服务器
访问SVN服务器地址:svn://192.168.1.1/项目名称
安装VisualSVN Server 3.8.6
选择可视化界面,增加环境变量
选择标准版
不要出现中文、特殊字符和空格,端口号改为8000以后的,防止冲突
进度条走完,安装完毕
1.前期配置工作
1.先在svn目录下建立一个WebApp文件夹;
2.在WebApp文件下建立Shop(项目名称),目前还只是文件夹,还需要和svn产生联系;
3.DOS命令行下输入 svnadmin create H:\SVN\Webapp\Shop 文件夹,如果配置成功,那么Shop应该多了6个文件;
2.服务器监管
Apache— http://localhost:8080 访问htdocs目录
SVN— svn://localhost: 访问相关的数据仓库(如Shop)
svnserve -d -r H:\SVN\Webapp\Shop
会弹出警告标志,然后光标会一直闪烁
通过以上指令(svnserve -d -r H:\SVN\Webapp\Shop),我们的SVN://localhost或者IP地址就可以直接指向Shop文件夹了。
3.权限控制
默认情况下,SVN服务器不允许匿名用户上传文件到服务端的,所以必须更改项目的相关控制文件。
打开shop\conf,找到svnserve.conf;
更改第19行代码如下: (去除#号,改为可写)权限可读可写;
4.SVN客户端配置
1.如图安装,记得重启一下即可;
2.还可以安装汉化包。(可选)
3.配置完之后第一次牵手:checkout(检出)
打开隐藏功能如果能看到.svn这个文件夹就说明客户端和服务端连接起来了,检出成功;
安装SVN中文版(可选):
使用客户端软件连接SVN服务器(checkout检出)
1.首先随便建个文件夹,取名jingli;(server/apache/htdocs/jingli)
2.在你的项目目录右键(进入jingli目录)—>TortoiseSVN—>版本库浏览器—>输入SVN服务器地址(本机直接输localhost,不是本机输入服务器的IP地址);
svn://svn服务器地址—>check out(检出)
并未出现,设置显示隐藏文件(计算机--->组织---->文件夹选项---->查看--->显示隐藏文件---->应用---->确定)
重新CheckOut检出,出现如下界面则证明成功,操作如下:在你的项目目录右键(进入jingli目录)—>TortoiseSVN—>版本库浏览器—>输入SVN服务器地址(本机直接输localhost,不是本机输入服务器的IP地址)—>右击项目,CheckOut;
显示隐藏文件,检出OK!
5.svn使用详解
1.启动服务器 (Dos窗口输入)svnserve -d -r H:\SVN\Webapp\Shop;
2.在新增文件页面右键—>提交;
3.填写必要信息,方便版本回退;
更新完毕;
如果有新员工李四狗加入公司,他应该如何下载项目源码呢?
1.首先建立lisigou文件夹,然后打开版本库浏览器(sisigou文件夹内右击);
2.输入svn地址
3.可看到之前的历史版本;
4.检出操作,下载源码到lisgou;
成功检出
如果李四狗也需要提交自己的代码,提交,服务器会同步更新;
如果经理想看李四狗今天做了啥,进入jingli目录,右击点击更新,即可;
图标集
(2)冲突:客户端提交的文件与服务器端数据不一致
(3)删除:服务器端数据已删除,客户端文件显示已删除
(4)增加:编写的文件已经添加到提交队列
(5)无版本控制:编写的文件没有添加到提交队列
(6)修改:客户端文件已修改但未提交
(7)只读:客户端文件以只读形式存在
(8)锁定:服务器端数据已锁定,客户端显示该图标
(9)忽略:客户端文件已忽略,不需要进行提交上传
忽略功能:
(1)忽略某个文件
有些文件不需要上传到服务器,设置忽略列表:
实现:需要设置的文件-->右击--->TortiseSVN--->增加到忽略列表(一个是忽略文件,一个是忽略文件夹)
(2)忽略某个类型的文件
版本回退
1.什么是版本回退
2.版本回退功能
1.经理删除了index.php,提交;
2.经理发现删错了,需要回退;
(1)jingli目录下右击,点击如下:
(2)选择根据日志回退,点击显示日志(3)更新,删除的文件恢复;
版本冲突(开发人员每天上班前更新自己的代码,旺财9:30提交,小强10:00提交)
解决之道
避免版本冲突:
合理分配项目开发时间;
合理分派项目开发模块。
通过SVN解决版本冲突问题:
(1)更新服务器端数据到本地(下图1点确定)
(2)删除除index.php以外的文件
(3)修改index.php冲突文件
(4)重新提交index.php到服务器
配置多仓库与权限
多项目监管
通过监管Webapp总目录实现多项目监管
(1)Dos窗口输入如下指令:d代表后台运行 r代表监管目录
监管总目录权限限制:
authz:授权文件,告诉用户有哪些权限
passwd:认证文件,表示用户名和密码
默认情况、两个文件都是禁用的,必须要开启上面两个文件,具体步骤如下:
1.进入仓库的conf文件,注释匿名用户可读写的权限;(19行加‘#’号)
2.开启认证和授权文件;(27和36行去掉‘#’号)
3.打开passwd文件,编写认证文件,定义用户和密码:(10行和11行为自己编写加入)
4.打开authz文件,编写授权文件:(建立两个组:admin和itcast组,并设置两个组的权限,shop为仓库名称)
分组+授权
测试是否成功
SVN的配置和管理
(1)配置服务器的自启动服务
sc create SVNService binpath = “H:\SVN\bin\svnserve.exe – service -r H:/Files/jingli” start = auto
在cmd中输入相关命令: sc create 服务名称 binpath=空格"svnserve.exe --service"
在控制面板-管理工具-服务,双击运行,找到SVNserver
运行成功,svn监管服务开发成功
(2)使用批处理文件来停止和开启管理器(重点)
启动服务 :net start 服务名称
停止服务: net stop 服务名称
删除服务 :sc delete 服务名称
封装成为.bat封装就可以减少很多工作量
(3)模拟真实场景(重难点)
(1)SVN工作流程
2、 使用钩子程序对项目进行更新
post-commit.tmpl: 事物完成之后触发的钩子程序
默认情况用批处理或者Shell指令完成
具体使用步骤:
SVN扩展程序
1、BAE云引擎
百度应用引擎(BAE),网络应用开发平台。