SVN 版本控制工具

1.Why?满足协同开发过程中版本控制要求。

2.What?

①Subversion,简称SVN

②版本控制工具。

CVS→SVN→GIT

 

传统开发:OA、PDM、ERP、CRM……

互联网开发:淘宝、京东、美团、微信、12306、FaceBook、YouTube、Twitter……

 

3.三个基本操作

①检出:checkout

②更新:update

③提交:commit

 

4.服务器端安装配置

①安装服务器端程序

运行:Setup-Subversion-1.8.9-1.msi

验证:在命令行中执行svn --version

 

C:\Windows\System32>svn --version
svn,版本 1.8.9 (r1591380)
   编译于 May  8 2014,13:53:01 在 x86-microsoft-windows

Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

可使用以下的版本库访问模块:

* ra_svn : 使用 svn 网络协议访问版本库的模块。  - 使用 Cyrus SASL 认证
  - 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
  - 处理“file”方案
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - using serf 1.3.5
  - 处理“http”方案
  - 处理“https”方案

②创建并配置版本库

[1]在硬盘上创建一个目录

D:\RepSVN\CRM

[2]在命令行执行下面命令

svnadmin create D:\RepSVN\CRM 

 

[3]效果

 

③启动服务器端程序

[1]命令行方式

svnserve -d -r D:\RepSVN\CRM

验证:检查3690端口是否被占用

netstat -an

TCP    0.0.0.0:3690           0.0.0.0:0              LISTENING

缺陷:窗口关闭后,服务器程序也停止

 

[2]单仓库和多仓库

(1)单:在启动服务器指定版本库位置时,固定使用一个单一的仓库

svnserve -d -r D:\RepSVN\CRM

 (2)多:在启动服务器指定版本库位置时,不指定任何一个具体的仓库位置

svnserve -d -r D:\RepSVN

在通过客户端访问服务器时再灵活的指定某个具体的仓库

 

[3]注册为Windows服务

(1)需要用到一个Windows内置的程序:C:\Windows\System32\sc.exe

(2)外层:sc create 服务名 binpath= "内部命令" start= auto depend= Tcpip

*要求:“=”左边必须没有空格,右边必须有一个空格

(3)内部:svnserve.exe文件路径 --service -r D:\RepSVN

sc create SVNService binpath= "D:\DevInstall\SubversionInstall\bin\svnserve.exe --service -r D:\RepSVN" start= auto depend= Tcpip

[4]sc相关命令

停止某个服务:sc stop 服务名

删除某个服务:sc delete 服务名

 

④在命令行中进行简单的操作测试

[1]检出命令

[2]执行检出命令后,检出目录下会自动创建.svn隐藏目录。包含.svn的那个目录称为工作副本。

为了保证工作副本能够正常和服务器端进行交互,.svn目录中的内容不要删除或修改。

[3]执行提交命令,要切换到工作副本目录中

  • 要提交一个文件,必须这个文件以及纳入版本控制体系

  • 执行svn add命令将文件加入版本控制体系

D:\WorkSpaceHarry>svn add Hello.txt
A         Hello.txt

 每次执行提交操作都必须附加日志信息

svn commit -m "My First commit" Hello.txt

必须具备对版本库中的特定目录具备写权限才能够执行提交操作

i.找到对应版本库的conf目录

ii.找到svnserve.conf文件

iii.释放anon-access = write,注意,前面不要有空格或其他内容,必须顶格

 

[4]更新操作:svn update

5.客户端

①Eclipse插件

[1]安装插件

将插件压缩包解压到eclipse\dropins目录下,重启Eclipse

[2]创建SVN资源库位置:告诉Eclipse SVN服务器的地址

 

[3]在Eclipse中创建一个工程

[4]将新建的工程上传到SVN服务器:分享

[5]build目录:默认不纳入版本控制体系。当检出一个新的工程,自动创建了build目录后,可以将这个新创建的build目录排除。

build目录右键→Team→添加至:svn:ignore

[6]在Eclipse中检出工程

※图标含义

:表示当前目录或文件中没有未提交的内容

:表示当前目录或文件中包含未提交的内容

:表示刚创建,尚未纳入版本控制体系中的目录或文件

:刚刚加入版本控制体系

:表示当前文件处于冲突状态

 

②独立客户端:TortoiseSVN

 

③冲突

[1]过时的文件。例如:在版本为9的文件中进行修改,但服务器端最新的版本已经是10了,那么这个修改的文件就已经过时了。

[2]过时的文件不能提交,必须先更新再提交。

[3]过时的文件不一定会产生冲突,产生冲突的文件一定是先有过时。关键在于两边修改的是不是同一个位置。如果是同一行则会产生冲突,否则不会。

[4]冲突的表现

[5]冲突的解决:详细操作步骤见讲义

[6]冲突的避免

  • 减少过时的文件:尽量在修改文件之前先更新这个文件

  • 尽量不要很多人改同一个文件

  • 加强团队成员之间的沟通

 

 

6.权限设置

①版本库中与权限设置相关的三个文件

svnserve.conf:对当前版本库的权限进行总体设置

passwd:设置用户名、密码

authz:分配权限

②svnserve.conf

# anon-access = write

取消匿名访问

auth-access = write

使用授权访问

password-db = passwd

使用passwd文件配置用户名密码

authz-db = authz

使用authz文件分配权限

③passwd:创建用户

kaifa01 = 123123

kaifa02 = 123123

ceshi = 123123

④authz:分配权限

kaifa = kaifa01,kaifa02

创建用户组

[/]

@kaifa = rw

ceshi = r

* =

针对版本库根目录进行设置

为用户组设置权限

为单个用户设置权限

表示除了上面设置过的用户以外,其他用户没有任何权限

 

7.查看历史记录

将匿名访问设置为none即可

anon-access = none

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独行客-编码爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值