码迷,mamicode.com
首页 > 其他好文 > 详细

svn使用小结

时间:2015-01-05 16:42:03      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:svn   版本控制   冲突   权限   

一、为什么需要SVN

在做中级项目中,都是采用小组合作开发的,在后期整合中常常遇到问题。这个时候就需要用到版本控制工具了。

 

版本控制工具主要应用于:

1、协作开发

2、远程协作

3、版本回退

二、什么是SVN

l  svn全称SubVersion

l  svn是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。(oschina、Github)

l  支持Windows、Linux、MacOS

l  前身是CVS

l  时间机器

 

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

SCM (软件配置管理)

对软件源代码的管理

 

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

VSSViusal Source SafeVisual 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分为服务器端与客户端

l  服务器端:VisualSVN   SubVersion

l  客户端:TortoiseSVN

 

server

http://www.visualsvn.com/

client

http://tortoisesvn.net/downloads

 

2、软件安装顺序

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

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

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

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

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

 技术分享


技术分享

 

4、客户端软件安装(TortoiseSVN)

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

技术分享


 

 

五、数据仓库

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

仓库的建立步骤:

1、创建代码仓库

l  在任意盘符下建立文件夹(d:\svn\myApp)做为我们的版本库根目录,如我们需要建立一个shop的项目,当前shop也只能算一个文件夹,而不是“仓库”

l  svnadmin create D:\svn\myApp\shop

2、启用代码仓库

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

 

Apache àlocalhost Apache/htdocs

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

 

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

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

技术分享

技术分享

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

技术分享

最后会在目录中出现隐藏的文件夹(.svn),代表成功


4、上传代码注意事项

 技术分享

 技术分享

提示无权限:那么请打开仓库中的conf文件夹里面找到svnserve.conf文件

更改代码,如下:

技术分享

 

六、图标解析

 

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 -rD:/svnroot” start=  auto

特别注意:

binpath=后面有一个空格

start=后面也有一个空格

必填,谨记!!!

技术分享

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

技术分享

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

l  net start SVNService 启动

l  net stop SVNService 停止

l  sc delete SVNService删除

 

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

技术分享

删除操作

 技术分享

svn使用小结

标签:svn   版本控制   冲突   权限   

原文地址:http://blog.csdn.net/w1396037340/article/details/42423451

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!