Gz__07svn版本控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gz__07svn版本控制相关的知识,希望对你有一定的参考价值。

程序设计中的"后悔药"——SVN

一、为什么需要SVN

你们在做中级项目中,都是采用小组合作开发的?那么说说你们在后期整合中遇到问题?

?

技术分享

?

主要应用于:

1、协作开发

2、远程协作

3、版本回退

二、什么是SVN

  • svn全称SubVersion
  • svn是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。(oschina、Github)
  • 支持Windows、Linux、MacOS
  • 前身是CVS
  • 时间机器

?

解决第一个问题中的解决方案

SCM (软件配置管理)

对软件源代码的管理

?

CVS:主要工作是对C语言或C++进行代码管理,但是由于编码问题,一直没有得到广泛的推广。

VSS:Viusal Source Safe:Visual Studio产品中的一员,主要是对.NET版本控制

ClearCase:类似于VSS,功能强于CVS,但是由于其价格昂贵,一直没有得到广泛的推广。

SVN:版本控制软件(主流)

Git:Linux下面的版本控制软件

面试题:什么是版本控制软件,有哪些功能,你知道的有哪些,你最擅长的是什么?

?

SVN:采用的是C/S结构

?

三、SVN中三大指令

1、Checkout 检出

2、Update???? 更新

3、Commit 提交

?

1、做为项目经理或技术总监,在项目开始时,首先在服务器上部署我们的SVN项目

2、上传我们的源代码(主要是一个公用文件或规则等)分为两步:

第一步:首先建立与服务器的链接(Checkout)

第二步:我们提交代码这个过程称之为(Commit)

技术分享

?

四、SVN的安装与配置

1、SVN分为服务器端与客户端

  • 服务器端:VisualSVN SubVersion
  • 客户端:TortoiseSVN

    ?

server

http://www.visualsvn.com/

client

http://tortoisesvn.net/downloads

?

2、软件安装顺序

先安装服务器端,服务器没有版本位数区分

VisualSVN:随时安装随时使用,方便卸载,无残留

技术分享

3、服务器端软件的安装注意事项

软件必须安装在除C盘以外的任意盘符下,文件夹命名不能出现空格或特殊字符,也不能出现中文。

安装完成,打开dos窗口输出svn,如果提示不是系统命令,那么轻重启电脑或强制结束explorer.exe,重新建立一下

?

技术分享

技术分享

?

4、客户端软件安装

技术分享

?

出现如下界面代表安装成功

技术分享

如果需要汉化的同学,请安装汉化包

?

?

五、数据仓库

在svn中我们的项目,不能称之为项目或文件夹,而是称之为"仓库"

仓库的建立步骤:

1、创建代码仓库

技术分享

2、启用代码仓库

svnserve –d(代表后台运行)-r(监管目录) D:/svn/myApp/shop

?

Apache à localhost Apache/htdocs

SVNà D:/svn/myApp/shop svn://localhost(主机名或ip地址)

?

3、如果建立客户的与服务器端的联系

单击版本库浏览器,输入如下网址:

技术分享

技术分享

鼠标右键,检出,出现如下界面,代表以建立连接

技术分享

出现如下,隐藏文件夹,代表成功

技术分享

4、上传代码注意事项

技术分享

?

技术分享

?

提示无权限:那么请打开仓库中的conf文件夹

?

技术分享

找到svnserve.conf文件

更改第19行代码,如下:

技术分享

技术分享

?

六、图标解析

?

1、代表服务器端与客户端文件相同,没有任何更改

技术分享

2、当前文件如果有修改,那么将显示如下图标

技术分享

3、当前要提交的文件,与服务器上其他人提交的文件有冲突,那么将显示如下图标

技术分享

4、当前文件,在服务器上已被删除,那么将显示如下图标

技术分享

5、当我们的文件,在服务器中,无法找到,那么将显示如下图标

技术分享

6、当我们的文件出现5的提示,那么你可以通过添加实现,下次commit过程中,自动提交的效果,图标如下:

技术分享

7、当我们的文件中,存在一些与系统无关的文件,如测试文件、项目需求分析文档等一系列文件,我们可以采用忽略的方式,图标如下:

技术分享

忽略方式有两种:

一种:只忽略某一个文件

二中:忽略某一类型文件

七、SVN中的数据备份

?

差异存储法:

技术分享

?

八、版本回退

?

技术分享

?

技术分享

?

技术分享

九、版本冲突

?

原理图:

技术分享

?

解决办法:

三种方案:

1)合理分配项目开发模块

wangcai:文章,邮件,会员

xiaoqiang:静态化,缓存,前台

?

2)合理分配项目开发时间

wangcai:上午开发

xiaoqiang:下午开发

?

3)多者同时开发某一文件,产生了问题,那么可以采用如下方式解决:

步骤:

1、首先更新文档,下载最新文件,如下图

技术分享

?

.r9:是系统最初的一个状态文件

.r10:是系统最新的也就是旺财上传的那个文件

.mine:我们现在要上传的文件

index.php文件是把两者的代码,进行了统一与合并

2、删除index.php以外的三个文件

3、合并与调整冲突代码

4、重新提交

成功

技术分享

?

十、多仓库配置

如果单独监管某一项目文件,无法同时进行开发工作。

所有项目都是放在myApp这个目录下面

我可以不可以直接监管myApp

?

问题1:如果我们监管myApp目录,那么myApp目录需要svnadmin create么?

问题2:它属于仓库么?

答:该文件本身不需要存储任何代码,其功能就是包含项目文件夹,所以从本质上来说,其还是一个文件夹。

功能:让svn://localhost(域名),定位到此文件夹。

?

那么:

比如shop项目访问的路径为:svn://localhost/shop

cms:项目访问的路径为:svn://localhost/cms

wechat:项目访问的路径为:svn://localhost/wechat

?

十一、权限控制

问题:当前采用单仓库或多仓库配置中,所有的文件权限都是可读写的,这样就会存在一个问题,只要任何知道了我们的访问地址,那么都可以对文件进行读写操作。

?

1、为什么需要权限控制

技术分享

?

打开服务器端的项目文件夹:

技术分享

svnserve.conf:项目的主配置文件,功能的开启和关闭

passwd:主要定义系统中拥有哪些用户以及用户密码

authz:该文件功能主要是进行文件授权,告诉svn哪些人拥有哪些权限。

?

默认情况下,系统主配置文件中,是没有开启passwd以及authz授权功能的,权限控制步骤:

1、在主文件配置开启passwd以及authz验证

技术分享

2、定义系统中有哪些用户与密码

?

技术分享

3、给用户授权

技术分享

?

4、重新开启监听

结束方法:Ctrl+C结束监听

技术分享

当我们进行提交的时候,需要

技术分享

技术分享

技术分享

?

十二、配置自动启动服务

1、添加到系统服务

sc create SVNService binpath= "D:\\subversion\\bin\\svnserve.exe --service -r D:/svnroot" start= auto

特别注意:

在binpath=后面有一个空格

在start=后面也有一个空格

必填,谨记!!!

技术分享

在系统服务中,将出现如下命令

技术分享

2、启动、停止与删除命令

  • net start SVNService 启动
  • net stop SVNService 停止
  • sc delete SVNService删除

?

启动与停止命令,采用net start|stop 服务名称

技术分享

删除操作

技术分享

?

3、封装命令到批处理文件

参考课件中的bat文件

?

技术分享

十三、扩展知识

1、BAE注册与使用,参考extend下面的BAE注册与配置文档

2、微信公众平台注册:mp.weixin.qq.com

准备一个小图标,300*300

准备霸气的名字

3、靠谱助手 4、css回顾一遍

以上是关于Gz__07svn版本控制的主要内容,如果未能解决你的问题,请参考以下文章

3----svn版本控制部署+分发机

01_版本控制工具(集中式和分布式)

Git学习总结_01_Git使用详细教程

搭建SVN版本控制服务器

版本控制——svn

从 SVN 迁移到 Git 存储库,其中同一项目的一部分已经发生迁移