细说SVN集中式版本控制器

svn全称Subversion,实现多人开发同一个项目时,对源代码进行管理的工具。在公司里边,一个项目是由多人同时在开发,大家在本地自己电脑开发php代码,完毕后就commit上传给服务器运行。

 如图:多人开发同一个php程序文件(重叠部分代码),在做commit提交给服务器的时候,要造成文件彼此覆盖的问题。

svn作用之一:解决文件覆盖,协作多人开发同一个项目的同一个文件问题。

一、什么是SVN

那么什么是SVN呢,下面就由我为大家细说,SVN是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 许多人会把版本控制系統想像成某种 “时光机器”。

成形于2001年8月31日

2010年1月成为apache软件基金会的顶级项目

使用svn的作用

① 协作多人开发同一个项目同一个文件,并且不会出现文件覆盖问题。

② 针对一个文件可以创建许多不同版本,并且可以随时查看不同版本的内容。

③ 公司领导可以通过svn查看每个人的工作情况

二、SVN的安装

1、服务器端安装

SVN服务器端软件下载地址:

https://sliksvn.com/download/

①创建文件目录,用于安装svn服务器端:D:\svn\server

2、客户端安装

tortoiseSVN客户端软件下载:

https://tortoisesvn.net/downloads.html

注意:该客户端安装完成后,重启电脑

该软件直接像其他软件一样,直接安装即可,没有注意事项

①创建多个svn仓库(存储代码)

svn是用于管理代码文件的,创建仓库用于存储php代码文件,因为公司在同期要开发维护多个项目的代码文件,因此要给svn创建多个不同仓库:比如

d:/svn/app/shop

d:/svn/app/book

d:/svn/app/car

svnadmin  create  d:/svn/app/shop[book/car]   //创建实实在在的创库

②执行指令,使得shop目录变为真实的SVN仓库效果

3. 启动仓库服务

svn要设置服务才可以使用,该服务走svn协议,端口为3690

启动服务指令:

> svnserve  -d[独立端口运行]  -r[具体仓库目录]   仓库地址目录

通过“超级管理员”权限打开dos命令行,挂起状态,不关闭

d:\svn\server\bin\svnserve.exe -d -r d:/svn/app

(注意:仓库地址目录为所有仓库的上级目录app,这样可以任意选取被操作的仓库)

4. 与仓库取得联系

开发者要把代码文件提交到svn仓库里边进行保管,提交之前先让开发者与svn仓库取得联系

①创建tom用户的工作目录:www\tom

工作目录:开发各种php代码文件的地方

tom工作目录与svn仓库取得联系:

执行鼠标右键--->checkout指令

此时在tom的工作目录里边生成一个.svn的隐藏文件,说明联系成功

三.使用svn服务

①在commit文件时出现commit failed(details follow)认证失败

原因是:该shop仓库没有设置账号权限

解决:打开仓库匿名账号权限,然后再进行commit

D:\svn\app\shop\conf\svnserve.conf

anon-access = write     //开启匿名账号权限设置

1. 文件颜色标志

① 蓝色加号:本地的.svn对该文件有形成管理(远程仓库 还没有该文件记录)

② 绿色对号:正常文件,本地文件、.svn管理的版本文件、仓库文件 三者内部内容一致

③ 红色叹号:表示 本地文件  与  .svn管理的文件内容不一致(用户自己修改了该文件)

④ 黄色叹号:表示该文件正处于冲突状态

⑤ 蓝色问号:新建的一个文件,本地.svn 和 远程仓库 对该文件都没有记录

2. svn的常见操作

① checkout: 检出动作,执行同时会把仓库全部文件更新到本地

② update: 把仓库最新的程序文件更新到本地

③ commit:  把本地文件提交给svn仓库

3. 目录和文件的提交

一个新目录创建好了,该目录内部还有新的程序文件

那么,只有该新目录提交完毕了,内部的新程序文件才允许提交

规律:一个文件只有上级目录已经被commit操作后,该文件本身才可以被commit操作

四.冲突Conflicted(重点)

1. 什么是冲突

冲突(conflicted)

多人在同一时间对同一个程序文件进行编辑后提交的时候,后提交的文件要覆盖先提交文件的现象称为“冲突”

tom在9:00对register.php文件进行开发

10:00对开发好的文件进行提交

jim在9:20对register.php文件进行开发

9:40对开发的文件进行提交

那么,在10:00以后服务器只给体现tom开发的功能,后上传的文件会把先上传的同名文件给覆盖了

冲突解决方案:

① 令牌方式解决

vss软件就采取这样的思路,给每个程序文件都分配一个令牌,只有拿到令牌的开发者才可以对这个文件进行修改,修改完毕再还令牌。

令牌的原理:同一个文件同一个时间点只能有一个人开发

② 版本解决:

svn的解决方案

只有本地的版本  与  服务器版本号码一致,才允许提交

本地版本 小于 服务器版本 则禁止提交

冲突具体形式与解决

①大家修改的代码不在同一处

冲突解决:执行update指令,使得服务器新版本与本地旧版本做融合操作,之后再继续commit提交即可

开启(超级管理员权限打开dos窗口)服务:

regsiter.php.mine: tom本地文件在update之前的效果

regsiter.php.r14: 是文件14版本的效果

regsiter.php.r15: 是文件15版本的效果

以上3个文件理解后直接删除,否则影响本文件commit提交

五.账号和权限

①关闭匿名账号:anon-access = none

去掉前面的#:password-db = passwd

        authz-db = authz

②设置账号

例如:tom = tom123

③给账号设置权限

#给shop仓库设置操作权限:[shop:/]

#给用户设置具体操作权限  r(read)读权限   w(write)写权限

例:tom = rw

#除了tom外,其他用户都没有操作权限

* =

r: 读权限,代表可以从svn仓库update更新文件

w:写权限,代表本地可以给svn仓库commit提交文件

svn与apache不同,配置文件修改了无需重启服务,svn每次运行的时候都会重新加载配置文件

此时,再进行svn操作的时候,提示我们输入用户名和密码

④给一个组别设置权限

有的时候一个项目组里边有多个开发人员(例如20个),这些人的操作权限都一致

为了分配权限比较方便、快捷,就给这些开发人员设置到一个组别里边,直接给组别设置操作svn的权限,组别的权限就等于开发人员的权限

有一个操作权限都一致的团队账号:

php = php1,php2,php3  //把团队成员设置到组里边

@php = rw   //直接给组别设置操作权限

六.设置开机启动项服务

超级管理员权限打开dos命令行: 创建服务器

sc create svnd binPath="D:\svn\server\bin\svnserve.exe -r d:/svn/app --service" start= auto

sc delete svnd:删除服务器

七.svn使用细节

1. 查看工作情况

领导可以通过svn查看大家的工作情况

操作:右键-->svn-->show log

2. 清除缓存

登录使用svn的时候,如果系统记住用户名、密码了,就不能更换其他账号

可以通过: 右键-->svn-->settings-->saved data  清除各种(账号)缓存

3. 关闭匿名账号

使用#号方式关闭匿名账号会影响 show log 文件维护日志的查看

4. 零bug开发

svn可以保证大家开发的代码都必须遵守严格的标准,如果哪个人把代码写错了,通过svn可以追查出来,包括一个.点或空格的微小错误

查看文件当前内容 与 之前版本内容的差异:TortoiseSVN->Diff with previous version

八.hooks钩子

通过svn开发的项目代码文件,最终需要上传给web服务器才可以运行,其中hooks钩子技术可以帮组我们把文件从svn仓库自动同步给web服务器

本地工作目录:E:/www/tom

svn仓库:D:/svn/app/shop

web服务器:D:/web/shop

九. svn扩展功能

1. 什么是BAE

百度应用引擎(Baidu App Engine,简称BAE)是国内商业运营时间最久、用户群体最为庞大的平台之一,提供弹性、便捷、一站式的应用部署服务,支持PHP/Java/Node.js/Python等各种应用。您只需上传应用代码,BAE自动为您完成运行环境配置、应用部署、均衡负载、资源监控、日志收集等各项工作,大大简化部署运维工作

除了BAE,还有aliyun(阿里应用引擎)、SAE(sina app engine新浪引用引擎)

在许多应用程序里边,svn已经作为一个不可缺少的组件构成应用的一部分,其中BAE(Baidu App Engine)里边就可以通过svn实现代码的上传和更新。

2. svn应用到bae里边

① 到bae里边创建应用

bae网址:https://cloud.baidu.com

先登录到bae应用里边

通过svn对bae代码进行维护

获取到的svn主机名地址:

https://svn.duapp.com/appidfr7dk8qylo

用户名:baidu账号

密码:baidu账号密码

创建本地svn工作目录

之后工作目录与svn仓库取得联系

在bae操作界面,如果有新文件被commit提交,其会有提示,之后我们还有点击“快捷发布”,以便文件可以同步到web服务器供访问:

时间: 2024-10-23 05:50:40

细说SVN集中式版本控制器的相关文章

SVN集中式版本控制器的安装、使用与常见问题汇总

SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,集中式版本控制器 官方网站:https://www.visualsvn.com/ 下载右边的服务器端,左边的客户端收费,我们使用TortoiseSVN替代他即可 TortoiseSVN:TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录.文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可以将文件恢复到过去

欺壹世充电系列之[Svn集中式版本管理系统]

Svn集中式版本管理系统 --欺壹世充电系列 一.svn服务器 1.什么是Svn svn(subversion)是一个垮平台的开源版本控制系统.管理随时间改变的各种数据.svn会备份并记录每个文件每一次的修改更新变动,这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本. 2.Svn与Git svn是集中式的管理,存在一个中央版本库,所有开发人员在本地开发所有使用的代码都来自于这个版本库,提交代码也都必须提交到这个中央版本库. svn版本控制系统流程如下: 1.在中央库上创建或从主干复

SVN 集中式版本控制软件

简介: 目前流行的版本控制软件中,SVN ( 集中式版本控制 ) 算是使用范围更广.且使用时间更早的一款了,现在 git ( 分布式版本控制 ) 更火爆一点. 一.安装svn [[email protected] ~]# yum -y install subversion [[email protected] ~]# svn --version #查看版本号 svn,版本 1.6.11 (r934486) 二.配置svn 1.创建工作目录及版本库 [[email protected] ~]# m

git与svn 集中式与分布式

集中式vs分布式 Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆. 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网

何为集中式版本控制系统与分布式版本控制系统?

什么是集中式版本控制系统与分布式版本控制系统? 集中式版本控制系统:版本库是集中放在中央服务器的,当我们实际工作的时候,用的都是自己的电脑,所以首先要连接中央服务器,从那里得到最新的版本,然后编写或者更改代码,干完后,需要把自己做完的活推送到中央服务器.集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就很郁闷了.     分布式版本控制系统:对于搞过大数据(Hadoop)或者大型数据库的朋友,对"分布式"这个概念一定很熟悉了

集中式版本控制系统:从svn到tfs

06年进公司的时候,我们没有使用版本控制系统,所有代码都在部门经理的电脑上放着,谁要改什么代码就过去要一份最新的,改好之后再放回去,感觉好原始.据说之前是用过一段时间微软的vss(visual.source.forge),曾经也搭建过vss服务器,但是中间不知道什么原因中断了,也就没有继续坚持了,可能是当时人还少,整个软件研发也就是10个人左右.所以没有使用版本控制也没有出什么大问题. 进公司之前,由于在matin fowler的<重构>中有提到版本控制系统,我就在自己电脑上搭建一个cvs服务

你了解SVN, CVS等版本控制器吗?

版本控制器SVN, CVS是两种版本控制器, 需要配套相关的SVN, CVS服务器, SCM是xcode里面配置版本控制的地方, 版本控制的原理就是A和B同时开发一个项目, A写完当天的代码之后把代码提交给服务器, B要做的时候先从服务器得到最新版本, 就可以接着做, 如果A和B都要提交给服务器, 并且同时修改了同一个方法, 就会产生代码冲突, 如果A先提交, 那么B提交时, 服务器可以提示冲突的代码, B可以清晰地看到, 并作出相应的修改或者融合后再提交.

版本控制器 (Svn,Git)

Svn: 集中式版本控制器,首先开发者在开始新一天的工作之前必须从服务器获取代码,然后进入自己的分支开发,开发完成后把自己的分支合并到主分支上进行提交,解决冲突.所有的版本信息都放在服务器上.如果脱离了服务器,开发者基本上可以说是无法工作的. Git:分布式版本控制器,比集中式版本库要安全一些,因为每个人电脑里都有完整的版本库,这样,我们工作的时候就不需要联网了. 区别:先说集中式版本控制器吧,Svn命令: (添加文件)(提交文件(修改文件)(删除文件)(查看日志)(查看文件详细信息)(svn帮

git版本控制器的基本应用

Git版本控制器是一个分布式版本控制器,在上次已经介绍过其更能与集中式版本控制器的区别,这次住要来介绍一下Git版本控制器的使用方法. Git中,再多个人同时工作时,需要各自在自己的计算机上初始化Git库.git init分区创建好后,查看工程状态.git status接下来就可以在创建的Git库中创建文件了.然后可以使用 git status  命令来查看git仓库中的变化.git status 命令要经常运行,因为有些文件在变化时候容易忽略.创建一个octocat.txt文件.此时创建的文件