一、为什么需要SVN
在做中级项目中,都是采用小组合作开发的,在后期整合中常常遇到问题。这个时候就需要用到版本控制工具了。
版本控制工具主要应用于:
1、协作开发
2、远程协作
3、版本回退
l svn全称SubVersion
l svn是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。(oschina、Github)
l 支持Windows、Linux、MacOS
l 前身是CVS
l 时间机器
解决第一个问题中的解决方案
SCM (软件配置管理)
对软件源代码的管理
CVS:主要工作是对C语言或C++进行代码管理,但是由于编码问题,一直没有得到广泛的推广。
VSS:Viusal Source Safe:Visual Studio产品中的一员,主要是对.NET版本控制
ClearCase:类似于VSS,功能强于CVS,但是由于其价格昂贵,一直没有得到广泛的推广。
SVN:版本控制软件(主流)
Git:Linux下面的版本控制软件
面试题:什么是版本控制软件,有哪些功能,你知道的有哪些,你最擅长的是什么?
SVN:采用的是C/S结构
1、Checkout 检出
2、Update 更新
3、Commit 提交
1、做为项目经理或技术总监,在项目开始时,首先在服务器上部署我们的SVN项目
2、上传我们的源代码(主要是一个公用文件或规则等)分为两步:
第一步:首先建立与服务器的链接(Checkout)
第二步:我们提交代码这个过程称之为(Commit)
l 服务器端:VisualSVN SubVersion
l 客户端:TortoiseSVN
server
client
先安装服务器端,服务器没有版本位数区分
VisualSVN:随时安装随时使用,方便卸载,无残留
软件必须安装在除C盘以外的任意盘符下,文件夹命名不能出现空格或特殊字符,也不能出现中文。
安装完成,打开dos窗口输出svn,如果提示不是系统命令,那么轻重启电脑或强制结束explorer.exe,重新建立一下
出现如下界面代表安装成功
在svn中我们的项目,不能称之为项目或文件夹,而是称之为“仓库”
仓库的建立步骤:
l 在任意盘符下建立文件夹(d:\svn\myApp)做为我们的版本库根目录,如我们需要建立一个shop的项目,当前shop也只能算一个文件夹,而不是“仓库”
l svnadmin create D:\svn\myApp\shop
svnserve –d(代表后台运行)-r(监管目录) d:\svn\myApp\shop
Apache àlocalhost Apache/htdocs
SVNà D:/svn/myApp/shop svn://localhost(主机名或ip地址)
单击版本库浏览器,输入如下网址:
鼠标右键,检出,出现如下界面,代表以建立连接
最后会在目录中出现隐藏的文件夹(.svn),代表成功
提示无权限:那么请打开仓库中的conf文件夹里面找到svnserve.conf文件
更改代码,如下:
1、代表服务器端与客户端文件相同,没有任何更改
2、当前文件如果有修改,那么将显示如下图标
3、当前要提交的文件,与服务器上其他人提交的文件有冲突,那么将显示如下图标
4、当前文件,在服务器上已被删除,那么将显示如下图标
5、当我们的文件,在服务器中,无法找到,那么将显示如下图标
6、当我们的文件出现5的提示,那么你可以通过添加实现,下次commit过程中,自动提交的效果,图标如下:
7、当我们的文件中,存在一些与系统无关的文件,如测试文件、项目需求分析文档等一系列文件,我们可以采用忽略的方式,图标如下:
忽略方式有两种:
一种:只忽略某一个文件
二中:忽略某一类型文件
差异存储法:
原理图:
解决办法:
三种方案:
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结束监听
当我们进行提交的时候,需要
sc create SVNService binpath= “D:\subversion\bin\svnserve.exe --service -rD:/svnroot” start= auto
特别注意:
在binpath=后面有一个空格
在start=后面也有一个空格
必填,谨记!!!
在系统服务中,将出现如下命令
l net start SVNService 启动
l net stop SVNService 停止
l sc delete SVNService删除
启动与停止命令,采用net start|stop 服务名称
删除操作
原文地址:http://blog.csdn.net/w1396037340/article/details/42423451