SVN基础
SVN概述
SVN(Subversion)是对源代码进行管理的工具,是代码版本管理软件
SVN的作用:
1. 协助多人开发同一个项目的同一个文件的时候,防止出现文件覆盖问题
2. 针对一个文件可以创建多个不同版本,可以随时查看不同版本的内容
3. 管理者可以通过SVN进行员工工作情况的检查
目前主流的源码控制管理软件:git和svn
SVN服务器软件下载地址
https://sliksvn.com/download/
SVN客户端下载地址(安装后需要重启)
https://tortoisesvn.net/downloads.html
SVN的使用
创建SVN仓库(用于存储代码)
cmd创建仓库:
E:\SVN\sever\bin\svnadmin.exe createE:\SVN\app\car
启动仓库服务
1. cmd启动仓库服务:需要挂起,不能关闭
E:\SVN\sever\bin\svnserve.exe –d –r E:\SVN\app
2. 设置开机自启动:有两个位置存在固定空格
sc create svnd binPath="E:\SVN\sever\bin\svnserve.exe -r E:\SVN\app --service" start= auto
使用SVN服务
与仓库取得联系(第一次)
右键个人工作目录下项目文件夹:checkout
填写svn主机名地址例如:svn://localhost/shop
连接完成的时候会在项目文件夹中生成一个隐藏文件夹.svn
仓库账号权限管理(至少开启匿名权限,不然无法提交文件)
在仓库的配置文件中进行设置:仓库→config→svnserver.conf
一、 仓库匿名账号权限
开启:anon-access=write(代码在第19行)
关闭:anon-access=none(不能使用注释方式,会影响日志的查看)
二、 账号密码权限管理
在配置文件中开启:password-db = passwd(27行)、authz-db = authz(36行)
1. 在仓库→config→passwd中创建账号(账号=密码)
2. 在仓库→config→authz中设置用户权限
#给shop仓库设置操作权限
[shop:/]
#给用户设置具体的操作权限:r读、w写
tom=rw
jack=rw
#除了tom和jack之外,其他用户没有权限
*=
设置组别权限:
[groups]
php=php1,php2,…
[shop:/]
@php=rw
设置限制目录权限:
给某些人员分配权限的时候只开放部分目录的权限
#给shop仓库设置外包限制操作权限
[shop:/Video]
#给用户设置具体的操作权限:r读、w写
waibao1=rw
#除了waibao1之外,其他用户没有权限操作Video文件夹
*=
向SVN仓库提交文件
右键文件→TortoiseSVN→add→重新右键文件→SVN Commit(设置日志信息方便后期维护)
提交文件的前提是该文件的上级文件已经被提交到SVN仓库
一键Commit操作:
在进行大量文件提交操作的时候,可以直接通过右键空白处→SVN Commit,然后选取
从SVN仓库中把最新的文件更新到本地
在工作目录文件夹中右键→SVN Update(与Commit一样都是常用操作)
同一个文件切换不同版本
SVN可以标记文件不同版本的状态信息,可以随时切换版本查看
右键对应文件→Tortoise SVN→Show log可以查看文件有多少版本
(管理人员可以用来查看工作情况)
右键对应文件→Tortoise SVN→Update to revision,可以切换到对应版本查看文件
查看完成后需要切换回最新版本后再进行操作
文件冲突Conflicted
冲突指多人在同时对同文件进行编辑提交的时候,后提交的会覆盖先提交的现象
文件冲突的解决方法
1. 令牌方式:同一个文件在同一个时间点只有一个人在进行开发
2. 版本解决:只有本地文件版本与服务器版本号一致的时候才允许提交
两种冲突形式:
①. 修改的代码不在同一处:
提示文件已经过时,提示执行update指令,执行之后会
在最新版本的内容基础上进行本地文件要进行的操作
②. 修改的代码在同一处(最本质冲突)
提示文件已经过时,提示执行update指令,执行之后会
在文件夹中生成三个文件方便对比不同版本的变化(直接删除)
手动进行整合(在上个版本的基础上操作)之后再次提交即可。
更换SVN主机名地址(当IP发生变化时)
1. 删除.svn断开和仓库间的联系,然后重新checkout后指定新的主机名地址
2. 通过客户端软件实现
右键工作目录空白处→Tortoise SVN→relocate→设置新的主机名
SVN缓存清理
主要用来清除登录的用户名和密码的记录
右键工作目录空白处→Tortoise SVN→relocate→Settings→Aaved Data
其中的Authentication data指账号缓存
SVN零BUG开发
查看文件当前内容和之前版本的内容差异
右键文件→Tortoise SVN→Diff with previous version
通过Show log可以看到是那个用户操作了文件
文件标志信息
1. 蓝色加号
本地.svn对文件形成管理,但是仓库中没有记录
2. 绿色对号
.svn文件形成管理,本地文件和仓库中的记录一致
3. 红色叹号
本地文件修改
4. 黄色叹号
文件冲突状态(多人对同一个文件的同一行进行操作)
SVN中的hooks技术(钩子)
服务器中的项目文件与仓库产生联系
设置钩子:
在仓库→hooks→制作bat脚本
SETSVN="E:/SVN/sever/bin/svn.exe"
SET DIR="E:/mvc/ceshi"
(call %SVN% update %DIR% --username tom--password tom123)
当仓库中的文件变更的时候会自动反应到服务器里的项目文件中
SVN在BAE应用
BAE网址:https://cloud.baidu.com
登录后按照操作步骤直至开通成功,获取到SVN主机地址
需要使用到百度账号和密码
将本地虚拟主机项目操作文件夹与SVN连接后就可以进行操作