1、SVN
1.1、SVN概述
1.1.1、为什么需要使用svn版本控制软件
协作开发
远程开发
版本回退

 

 

 


1.1.2、解决之道
SCM:软件配置管理
所谓的软件配置管理实际就是对软件源代码进行控制与管理。

CVS:元老级产品
VSS:入门级产品
ClearCase:IBM公司提供技术支持
SVN:主流产品

1.1.3、什么是SVN
SVN的全称是subversion
SVN是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数软件公司都使用SVN作为代码版本管理软件。
特点:

操作简单,入门容易。
支持跨平台操作(Window,linux,MacOS)
支持版本回退功能(时间机器)
1.1.4、获取SVN软件
属于C/S结构软件(客户端与服务端)

服务器端软件:VislualSVN
网址:https://www.visualsvn.com/downloads/

 

 

 

 

客户端软件:Tortoisesvn
网址:https://tortoisesvn.net/downloads.html

 

 

下载客户端汉化语言包:

 

 

 

 


2、SVN软件安装与配置
2.1、项目开发工作流程

 

 


2.2、服务端软件安装(VislualSVN)
1.双击安装服务端软件

 

 

2.勾选复选框同意,然后点击Next

 

 

3.选中默认配置,点击next

 

 


4.设置服务端的安装路径,资源的存放目录以及端口号(选择8443端口号,443一般会被占用),点击Next。

 

 

5.选择不启用存储库搜索索引

 

 

6.选择自定义创建账号,点击【Next】进入下一步。

注意:当您选择启用存储库搜索索引或 Windows 身份验证时,您需要开始 45 天的评估或输入足够的许可证密钥,因为这些功能在免费的社区许可证下不可用。

 

 

7.点击【Install】进行安装。

 

 

8.安装完成后,可以勾选复选框,然后选中Finish

 

 

9.出现一下窗口,表示安装成功。

 

 


2.3、SVN服务端配置
2.3.1、创建一个项目
1.首先在SVN服务端创建一个公有目录WebApp作为项目目录

 

 


2.在WebApp目录下创建Shop文件夹,作为Shop(版本仓库)。
需求:搭建一个商场系统,所以创建Shop目录。
说明:svn中没有项目目录的概念,一个项目就代表一个版本仓库。

 

 

3.创建版本仓库
注意:目前的Shop还只是是一个普通文件夹,还需要和svn产生联系,把普通文件夹转化为一个版本仓库.
Dos基本语法:

1》svnadmin create Shop 文件夹路径(Shop仓库)

管理员方式打开Dos窗口:

 

 

4.如果配置成功,那么shop应该多了6个文件
目录说明:

conf:整个项目的配置文件
db:数据最终存放在此文件夹
hooks:钩子文件,比如在开发过程中使用同步复制,同步更新这个时候就可以用到钩子指令
locks:追踪用户
format:一个整数类型数据,表示版本仓库的层次结构
README.txt:说明文件

 

 

2.3.2、进行服务端监管
什么是监管???
如:
在PHP中:Apache — >http://localhost或(Ip地址)访问到htdocs目录下相关文件(服务器端监管)
在SVN中:SVN —> svn://localhost或(Ip地址)访问到相关的数据仓库( 通过监管可以实现在客户端访问到服务端,如shop 仓库)

基本语法:

1》svnserve -d(后台运行) -r(监管目录) 版本仓库路径

如下图所示:
说明:光标一直闪烁代表指令执行成功,注意当前窗口不要关闭,如果关闭代表监管指令的强制终止,就没办法进行数据的链接了。

 

 

通过以上指令,我们就可以通过svn://localhost 或 ip地址就可以直接指向Shop版本仓库。

2.3.3、权限控制
说明:默认情况下,SVN服务器是不允许匿名用户上传文件到服务端的,所以必须更改项目的相关配置文件。

 

 

从上到下的目录依次是:

授权文件
钩子的模板文件
存储登录相关的用户名,密码的相关程序
svn的核心配置文件

 

 

write:可读可写
read:只可读,不可写。

 

 


2.4、客户端软件安装(Tortoisesvn)

 

 


2.4.1、客户端软件安装步骤
1.双击安装程序,选择Next.

 

 

2.选择Next

 

 

3.选择安装路径
注意:想要集成到idea中要勾选第一个:Will be …

 

 

4.点击【Install】进行安装。

 

 


5.是否需要重启,根据自己的需求进行选择。

 

 

6.选上,更新日志,可以查看更新的版本详细信息,也可以不够选,点击Finish

 

 

7.安装成功后没有什么窗口,可以在任意空白地方,右键,出现以下内容表示安装成功。

 

 

 

2.4.2、客户端汉化包安装步骤
双击运行语言包,系统会自动寻找客户端软件安装目录,并进行自动安装。

 

 

 

安装完成后可以在设置中切换中文和英文:

 

 

 

 


效果:

 

 


2.5、使用客户端软件连接SVN服务器
2.5.1、Checkout检出
说明:第一次与服务器进行连接时都需要进行Checkout检出操作。

首先在你的项目目录鼠标右键----》TortoiseSVN—》版本库浏览器—》输入SVN服务器地址

步骤:在D盘创建一个目录jingli,来模拟项目经理使用的过程

 

 

 

 

 

说明:输入ip地址进行连接,如果是本机也可以输入localhost.
svn://SVN服务器地址---->Shop项目(仓库)

 

 

说明:单击检出功能,系统会自动检出数据到客户端。

 

 

 

 

 

 

 

 

显示隐藏文件:打开隐藏功能如果能看到.svn这个文件夹就说明客户端和服务端连接起来了,检出成功;

 

 

 

 

 


3、SVN使用详解
3.1、三大指令
3.1.1、checkout 检出操作:
链接到SVN服务器端
更新服务端数据到本地
注意:Checkout只在第一次链接时操作一次,以后进行更新操作请使用Update更新指令。

3.1.2、commit 提交代码:
提交本地数据到服务端
说明:当我们检出成功后,目录会有一个绿色的小图标。

 

 


说明:一旦检出操作成功,右键的checkout检出操作会变为更新、提交操作。

 

 

 

 


显示以下界面代表提交成功:

 

 

以上工作大部分都是由项目经理完成的,如果公司新来一个程序员李四,他要做哪些操作呢?

在李四的电脑上创建一个文件夹lisi,来模拟李四的的操作:

 

 

首先:项目经理会告诉李四的连接svn服务器的地址,通过检出操作与服务器进行链接。(注意:找项目经理给你开通权限以及创建用户账号密码)

 

 

填写svn服务器连接地址:

 

 

在检出窗口中就可以看到,当前服务器中所拥有的的源代码。

 

 

右键检出操作

 

 

 

 

 

 

 

检出效果如下:

 

 

其次:当李四的项目开发的源代码已经写好后,需要进行提交操作commit:

 

 

 

 

 

 

 

 

 

效果如下:

 

 

总结:以上指令通常是在模块开发完毕后上传。

3.1.3、update 更新操作:
项目经理想要查看当前整个项目的进度:需要更新svn服务器的数据到本地。

 

 

 

 

 

系统会自动更新最新的数据到本地:

 

 


3.2、图标集与忽略功能
3.2.1、图标集
说明:当项目进行检出操作后,发现很多文件上都有图标,那么这些不同的图标都代表有什么样的含义呢???
我们需要掌握常见的图标,所表示的含义。

1.查看图标集

 

 

 

 


2.常规图标:

 

 

含义:当客户端文件与服务端文件完全同步时,系统显示以上图标。

3.冲突图标:

 

 


含义:当客户端提交的数据与服务端数据有冲突时,系统显示以上图标。

4.删除图标:

含义:当服务端数据已删除,那么客户端该文件将显示以上图标。

5.增加图标:

含义:当我们编写的文件已添加到提交队列,那么系统将自动显示以上图标。

6.无版本控制图标

含义:当我们编写的文件没有添加到上传队列时,那么系统将自动显示以上图标。

7.修改图标

含义:当客户端文件有修改但未提交,此时将自动显示以上图标。

8.只读图标


含义:当客户端文件以只读形式存在时,此时将自动显示以上图标。

9.锁定图标:

含义:当服务端数据已锁定,那么客户端文件将自动显示锁定图标。

10.忽略图标:

含义:客户端文件已忽略,不需要进行提交上传,那么将自动显示以上图标。

3.2.2、忽略功能
有些文件不希望上传到svn服务器,应该将该文件或该类型的文件添加至忽略列表。

 

 


说明:在进行提价操作时,会自动显示所有的文件,非常不方便。

 

 

1.忽略某个指定的文件。

解决:选择想要忽略的文件 右键…

第一种方式(没有recursively):忽略此文件,针对的是文件。
第二种方式(有recursively):以递归方式忽略,针对的是文件夹操作。

 

 

2.忽略某个类型的文件。

 

 


效果如下:

 

 


3.3、版本回退
3.3.1、什么是版本回退
有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。
3.3.2、图解分析
说明:相比传统的方式占用内存更少,可以更加轻松的回退到之前的某个状态。

 

 


3.3.3、操作步骤
1.删除需求分析文件:

 

 

进行提交

 

 

当数据有更新时需要重新进行提交一次:

 

 

 

 


2.需求:突然发现刚才删除的文件删错了,这个时候就可以通过svn回退到之前的某个状态。

 

 

 

 


版本号不好记,所以开发中一般是根据日志功能进行回退。

 

 

根据日志信息显示要回退的状态:

 

 

 

 

 

 

 

效果如下:之前删除的文件又有了。

 

 


3.4、版本冲突
3.4.1、什么是版本冲突?
说明:在实际项目开发中,如果2个人同时修改某一个文件就会产生版本冲突问题。

3.4.2、模拟版本冲突

 

 

新建2个目录:wangcais、xiaoqaings.

 

 


在wangcais目录进行第一次检查操作:

 

 

 

 

 

 

 

 

 

 

 

 

 

效果如下:

 

 


同样在xiaoqiangs目录进行检出操作:效果如下

 

 


旺财在9.30时就完成了aaa.docx文件的修改工作:

 

 


添加一句话来模拟:

 

 

进行提交:

 

 

 

 

 

小强在10:30完成了aaa.docx文件的修改工作:

 

 


同样添加一句话来模拟:

 

 

进行提交:

 

 


此时会出现版本冲突问题:

 

 


3.4.3、解决:版本冲突
合理分配项目开发时间:
旺财:上午开发
小强:下午开发
合理分配项目开发模块
旺财:购物车模块
小强:文章模块
通过SVN解决版本冲突问题:
(1). 更新服务端数据到本地

 

 

 

 

 

 

 

 

 


此时会新生成3个文件:

 

 

aaa.docx:整合后的aaa.docx文件。(当出现冲突后,系统会自动整合旺财和小强所编写的文件,里面是整合后的内容。)
aaa.docx.mine:后提交的内容,小强修改后的aaa.docx文件。
aaa.docx.r9:9:30更新时的aaa.docx文件(起始文件)
aaa.docx.r10:旺财修改后的aaa.docx文件。
(2). 删除aaa.docx以外的其它3个文件:
(3). 修改整合的aaa.docx冲突文件:

 

 

(4). 重新提交数据到svn服务器,即可解决版本冲突问题:

 

 

 

 

 

 

 

4、svn配置多仓库与权限控制
4.1、配置多仓库
说明:在实际开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢??
通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,而不能同时监管多个仓库。

 

 

答:可以通过监管WebApp总目录来达到监管所有仓库的目的。

1>svnserve -d(后台运行) -r(监管目录) WebApp(项目总目录)

1.打开Dos窗口,输入以下指令。

 

 

通过以上指令,我们就可以通过svn://localhost 或 ip地址来访问E:\SVN\server\WebApp目录。
如果需要访问Shop项目,WeChat项目
Shop项目:svn://localhost/Shop
WeChat项目:svn://localhost/WeChat

4.2、权限控制功能
说明:开发中不能让每个人都有可读可写权限。
使用前提是:必须首先开启权限功能。

在每一个仓库都有一个conf文件夹,里面有3个文件。

authz:授权文件
告诉哪些用户具有那些权限。

passwd:认证文件
标识当前svn系统中某个仓库具有那些用户名以及相应的密码。

默认情况下:以上2个文件都是禁用的,如需要使用,首先需要开启以上2个文件。

svnserve.conf:核心配置文件

开启步骤如下:

找到 并打开svnserve.conf文件。

 

 


注释掉之前配置的匿名用户的可读可写权限。

 

 


开启认证和授权文件

 

 


编写认证文件,定义相关用户和密码:打开passwd文件

 

 

 

 

 

编写授权文件:打开authz文件

 

 

 

 

 

 

 


测试:
新建一个目录

 

 

进行第一次检出操作

 

 

 

 

 

 

 


此时说明:匿名用户具有可访问权限。

 

 

在王五目录中新编写一个文件进行提交:

 

 

 

 

 

 

 

出现一下内容代表授权成功。

 

 

输入用户名、密码:admin、admin888

此时就可以上传成功了。

 

 


5、svn服务配置与管理
5.1、配置自启动服务
说明:当前所有开发工作都需要这个监管指令,这个监管指令是通过DOS窗口来监管和实现的。如果当前的服务器重启了,那么这个DOS窗口显然不会自动运行了。

 

 


解决:可以通过windows的相关指令,把我们的监管指令追加到系统的服务中,这样系统就会随着windows的启动而启动,随着windows的关闭而关闭。

sc create SVNService binpath= "E:\SVN\server\bin\svnserve.exe --service -r E:\SVN\server\WebApp" start= auto
sc create 服务名称 binpath=空格"bin目录下的svnserve.exe的路径 --service -r 监管的目录" start=空格 auto

1.打开运行,输入cmd指令,打开DOS环境(请使用超级管理员运行)

2.输入以下指令

 

 

 

 

 

3.查看系统服务
控制面板----windows工具(管理工具)----服务

 

 

双击运行,启动SVNService服务:

 

 


此时关闭黑窗口进行测试:

 

 

如果提交成功代表开启svn监管服务。

 

 


5.2、创建批处理文件
说明:如果想对服务进行启动、停止、删除等操作。可以做一个批处理文件,把这些指令都封装起来,以后只需要通过对应的批处理文件来进行相关的服务操作了。

批处理文件:在windows中以.bat结尾的文件叫做批处理文件,它可以执行相关的处理指令。

启动服务: net start 服务名称

停止服务: net stop 服务名称

删除服务: sc delete 服务名称

 

 


以上功能在实际项目开发中经常使用,所以可以封装为.bat批处理文件,效果如下:

首先,创建3个批处理文件:

 

 

依次在每个文件中编写一下指令:

 

 

 

 

 

 

 

之后在对应的批处理文件上右键以管理员的方式运行:

 

 

黑窗口弹出后会自动消失:

 

 

 

 

 

6、模拟真实开发环境
6.1、svn工作流程
说明:以前都是通过超级管理员从svn服务器更新数据到web服务器,但是这样的缺点是:一旦更新数据太过频繁,超级管理员对这整个服务器都要进行频繁的操作,非常的麻烦。

解决:可以通过钩子程序实时更新数据到服务端。

以前:

 

 

现在:

 

 

 

6.2、钩子程序
所谓的钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改
默认情况下,钩子的子目录(版本仓库/hooks)中包含各种版本库钩子模板。

 

 

post-commit.tmpl:事务完成后所触发的钩子程序:
钩子程序默认情况可以采用批处理指令或shell指令来进行编写。
6.3、通过批处理指令编写钩子程序
指定svn服务的端的工作目录:
设置服务端svn路径:SET SVN="E:\SVN\server\bin\svn.exe"

指定Web服务器工作目录:SET DIR="D:\Web\Shop"

通过update指令实时更新数据到DIR目录中:SVN update %DIR%

6.4、具体使用步骤
1.复制post-commit.tmpl文件为post-commit.bat文件

 

 


2.填入相关批处理指令

 

 


3.在D盘的Web目录下创建Shop项目,并更新SVN服务器数据到本地

 

 

 

 

 

 

 


此时数据都刚更新到了本地:

 

 

4.新建一个目录xiaoming,在xiaoming目录中进行检出操作:

 

 

 

 

 

5.在xiaoming目录中编写测试文件:hhh.docx文件

 

 


提交:hhh.docx文件

 

 

 

 

 

 

6.效果:在Shop目录可以实时获取到最新数据

 

 


7.可以通过虚拟主机形式直接访问更新文件,因为Shop是模拟的,不是Web服务器,所以不能访问。

 

 


7、SVN扩展程序
说明:实际开发中所有的程序操作都是在SVN服务器中完成的,而SVN服务器是运行在一台真实的服务器中它本身价格是比较昂贵的,作为个人开发者如过没有一台真实的服务器进行管理,那么如何来模拟svn的服务器以及通过更新数据到web服务器中呢???

7.1、BAE云引擎
7.1.1、介绍
百度应用引擎(Baidu App Engine,简称BAE)是百度开发的网络应用开发平台。基于BAE架构,使开发者不需要维护任何服务器,只需要简单地上传应用程序,就可以为用户提供服务。

开发者可以基于BAE平台进行PHP/Java/Node.js/Python等各种应用的,开发、编译、发布、调试。

7.1.2、使用
BAE地址:https://cloud.baidu.com/

操作步骤:https://www.bilibili.com/video/BV13s411h7QM?p=12&spm_id_from=pageDriver

SVN客户端上切换登录用户的方法

SVN客户端上怎么切换登录用户
方案一:
windows环境:
1、在项目上右键,选择TortoiseSVN-->settings,
2、在弹出的TortoiseSVN Settings页面中选择“Saved Data”选项,
3、然后点击“Authentication data”对应的“Clear”按钮,清除一下之前的认证信息就可以了。
下次,就会要求输入用户名和密码,OK!
linux环境:svn co --username xxxxx svn://www.yyy.com/aa/bb
方案二:
1、通过删除SVN客户端的账号配置文件
(1)找到我们使用的客户端配置文件,在window xp下面他们的位置在系统盘的 Documents and SettingsalexApplication DataSubversionauth文件夹中,把里面的所有文件删除。
(2)使用SVN更新或提交,使得客户端与服务端进行通讯,这样就会SVN客户端就要求我们输入新的用户名密码,输入我们的用户名密码就可以替换掉旧的用户名密码。
2、通过修改SVN服务端账号配置文件,这部分需要SVN的管理员配合
(1)找到服务端账号配置文件,这个文件位于SVN服务器的安装路径 config文件夹,打开并编辑passwd文件,删除或注释需要被替换的账号
(2)在客户端使用SVN更新或提交,使得客户端与服务端进行通讯,这样就会SVN客户端就要求我们输入新的用户名密码,输入我们的用户名密码就可以替换掉旧的用户名密码。

用DiskGenius转换动态磁盘的方法
用DiskGenius(软件下载地址http://www.gimoo.net/softs/44330.html)转换动态磁盘兼说windows7不能导入动态磁盘的问题,提示说,包数据有错误。在windows7以前,要想动

Oracle数据库网络与安全FAQ精粹汇集
[Q]如何限定特定IP访问数据库[A]可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是.protocol.ora),9i可以直接修

开机启动项怎么设置 启动项命令的设置方法详解
开机速度有点慢,可能是随Windows启动项有点多的缘故,运行msconfig,就可以看到电脑启动时加载的程序(当然现在也有很多管理软件更便利,如360安全卫士

posted on 2022-10-10 18:12  小凡人  阅读(803)  评论(0编辑  收藏  举报