src="//player.bilibili.com/player.html?aid=7959491&cid=13073189&page=1" scrolling="no" border="0" allowfullscreen="true"> 视频原址:黑马程序员SVN视频教程

什么是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一份;
Commit(提交):当你已经修改了代码,你就需要Commit到repository;
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更。Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。

如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认。

安装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
会弹出警告标志,然后光标会一直闪烁

通过以上指令,我们的SVN://localhost或者IP地址就可以直接指向Shop文件夹了。

3.权限控制

默认情况下,SVN服务器不允许匿名用户上传文件到服务端的,所以必须更改项目的相关控制文件。

打开conf,找到svnserve.conf;


更改第19行代码如下: 权限可读可写;

4.SVN客户端配置

1.如图安装,记得重启一下即可;
2.还可以安装汉化包。
3.配置完之后第一次牵手:checkout(检出)
打开隐藏功能如果能看到.svn这个文件夹就说明客户端和服务端连接起来了,检出成功;



使用客户端软件连接SVN服务器(checkout检出)
1.首先随便建个文件夹,取名jingli;
2.在你的项目目录右键—>TortoiseSVN—>版本库浏览器—>输入SVN服务器地址;

svn://svn服务器地址—>Shop目录(仓库)


显示隐藏文件,检出OK!

5.svn使用详解

1.启动服务器 svnserve -d -r H:\SVN\Webapp\Shop;
2.在新增文件页面右键—>提交;
3.填写必要信息,方便版本回退;


更新完毕;

如果有新员工李四狗加入公司,他应该如何下载项目源码呢?

1.首先建立lisigou文件夹,然后打开版本库浏览器;


2.输入svn地址

3.可看到之前的历史版本;

4.检出操作,下载源码到lisgou;

成功检出

如果李四狗也需要提交自己的代码,提交,服务器会同步更新;

如果经理想看李四狗今天做了啥,点击更新,即可;

图标集

版本回退

1.什么是版本回退

2.版本回退功能

1.经理删除了index.php,提交;

2.经理发现删错了,需要回退;

3.选择根据日志回退;

更新;

4.index.php文件恢复;

3.版本冲突


解决之道
避免版本冲突:
合理分配项目开发时间;
合理分派项目开发模块。

配置多仓库与权限

监管总目录权限限制

authz:授权文件,告诉用户有哪些权限
passwd:认证文件,表示用户名和密码
默认情况、两个文件都是禁用的,必须要开启上面两个文件,具体步骤如下:

1.注释匿名用户可读写的权限;

2.开启认证和授权文件;


3.编写认证文件,定义用户和密码:打开passwd;

4.编写授权文件:

分组+授权

测试是否成功

SVN的配置和管理

配置服务器的自启动服务
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监管服务开发成功
使用批处理文件来停止和开启管理器
启动服务 net start 服务名称
停止服务 net stop 服务名称
删除服务 sc delete 服务名称

封装成为.bat封装就可以减少很多工作量
模拟真实场景(重难点)
1、 使用钩子程序对项目进行更新

post-commit.tmpl: 事物完成之后触发的钩子程序

默认情况用批处理或者Shell指令完成

SVN扩展程序

1、BAE云引擎

百度应用引擎(BAE),网络应用开发平台。

http://bce.baidu.com/