SVN版本控制器

SVN版本控制器

主要作用:利于团队开发,控制版本
同类版本控制器 :Git(主要用来管理Andriod项目) CVS(之前的版本控制器)

版本控制概念
版本控制器的优势:
1)轻松比较不同版本间的细微差别
2)及时了解团队中其他成员的进度
3)广域网共享(开源的项目框架都有对应的svn地址,可直接通过公网下载)局域网共享
4)协同工作,大大提高团队工作效率

通过Tortoise获取第三方仓库
https://src.springframework.org/svn/spring-framework/

SVN的基本概念
1.配置库(Repository、仓库、版本库) -类似于数据库 是一个文件系统 存储增量版本,体积可以控制
客户端分配权限后可以下载,上传
2.工作副本
客户端下载的是配置库的工作副本,对副本进行修改、提交

SVN配置库
1.文件夹形式存储数据
2.任意数量的客户端可
3.可以读写这些文件
4.设置相应的权限与组

SVN工作副本
1.客户端的工作空间
2.可以查看, 修改, 编译, 运行操作
3.需要提交到配置库中(分配提交权限)

SVN安装与运行

客户端:TortoiseSVN(区分32位和64位,不同的操作系统选择不同的版本)
服务端:32位和64位都可以用 32-64通用.zip —-Setup-Subversion-1.6.6.msi

服务端和客户端版本可以不一致

客户端安装完成在鼠标右键菜单出现SVN check out等菜单

下载出来的版本称为工作副本 ,公网开源的工作副本 下载下来 没有修改权限和提及权限

扫描二维码关注公众号,回复: 1026881 查看本文章

.svn文件夹 很重要 保持与版本库的信息 删除掉.svn文件夹代表该文件夹只是普通文件夹,与配置库不存在联系

checkout的代码没有svn图标 :对勾图标 表示一致 修改了之后则是红色的感叹号图标表示和配置库不一致
文件夹没有图标则重启计算机
通过explorer.exe进程代替重启过程(关闭explorer.exe进程主要负责桌面图标显示,之后新建进行 并运行 刷新桌面)

SVN服务器的安装

–双击,next既可完成安装
–验证是否安装成功:svn –version (–代表全写 -代表简写 例如 svn -he 等同于 svn –help)
当使用两个横杠时,必须全写,一个横杠可以简写,没有提供svn -v 这种简写方式
–使用svnserve –help 来查看具体的参数
–创建版本库:svnadmin create 版本库路径
svnadmin -h 查看帮助
svnadmin create -h 查看下一级的帮助
–启动SVN服务svnserve–d –r 仓库路径可

svn服务端和客户端都在环境变量中有所配置,所以在命令中可以查询

创建svn文件库 :svnadmin create c:/svn
本质 :创建一个文件夹

这里写图片描述

conf :可以在文件夹的配置文件中 进行授权以及添加用户名和密码
db:仓库真正存放数据的文件
hooks:仓库扩展–linux概念
locks:锁的信息

客户端也可以创建版本库 鼠标右键 –共享 –create respository here

一般通过服务器创建 (cmd命令的方式来创建版本库)必须在空文件下创建版本库

创建仓库完毕后 并不能通过客户端连接(连接拒绝),版本库并没有运行服务,需要启动
svnserve -h
svnserve -d -r c:\svn

-d代表后台运行,关闭cmd框 windows服务会关闭,即版本库服务运行停止

-d代表后台运行仅仅针对linux系统有效

所以需要注册windows服务
在cmd下通过sc命令 sc -h (windows命令 ,可用来管理服务、注册服务、删除服务,但必须在管理员权限下使用)
必须是管理员权限
-d 后台模式在window中无效
sc create 来注册服务

sc -h
sc create svn binPath=”D:\Subversion\bin\svnserve.exe –service -r c:\svn ” displayname=”svn”

第一个svn是服务名称
最后一个svn是服务的显示名称

c:\svn 必须保证存在文件夹,否则服务可以创建成功,但服务在启动时会报错

删除服务

sc delete svn
删除时必须按照服务名称删除,而不是显示名称

启动后命令一直在运行

checkout :
svn://localhost:3690/(svn协议 默认端口3690) 默认代表c盘(默认端口可以不写

SVN常见操作
SVN服务器端:管理仓库
SVN客户端:本地下载工作副本

checkout:从服务端下载内容
浏览仓库:鼠标右键–TortoiseSVN –Repo-broeser
输入url即可

把代码初始化到仓库
鼠标右键–TortoiseSVN –Import
这里写图片描述

提交时提示认证失败

设置权限:
打开conf 下的文件svnserve.conf
这里写图片描述

password-db = passwd
对应同目录的passwd,设置权限文件也可以写成password-db = passwd.txt 但对应目录要改成passwd.txt 注意不要留空格

这里写图片描述

服务不需要重启
这里写图片描述

Tortoise import —–import仅仅使用一次
用来初始化版本库
需要要分配权限

鼠标右键 SVN Commit commit提交
鼠标右键 SVN Update update更新(更新最新版本)

新增用户(默认只读)
svnserve.conf
password-db= passwd
passwd文件中添加账号

设置权限
anon-access=read # 默认
auth-access=write

Tortoise 常见子命令
import:将未纳入版本控制器的文件或目录提交到版本库中
checkout: 从版本库标签中出工作副本
revert: 将工作副本文件回复到原始版本
update: 将版本库的修改合并到工作副本中
commit:把工作副本的修改提交到版本库

Revert
作用:撤销本地所有未提交的修改
注意:没执行Commit操作之前执行此命令

这里写图片描述

SVN冲突问题
Commit提交冲突
出现在多团队同时修改并提交文件时
针对不同文件的修改 互不影响,但是需要先更新再提交
但是两个人如果修改了同一文件,则会发生冲突
选择先更新,再进行比对合并版本
这里写图片描述

冲突解决方案
1.update
2.edit conflict
3.commit

关于冲突建议
1.修改之前先update
2.修改之后立即commit
3.出现冲突很正常,需要解决冲突

这里写图片描述

权限与插件
团队成员比较多,需要对不同的人的svn权限进行管理
设置在conf下边的authz文件中
设置用户分组:
这里写图片描述
dev 下边admin和admin2
user下边user和user2
设置读写权限:
这里写图片描述

设置dev组的用户对根目录有读写权限
设置user组的用户对根目录有读权限
设置user组的用户对根目录下的doc有读写权限

保存后不能生效
需要在svnserve文件中开启,不能有空格
这里写图片描述

权限对目录有继承性

这里写图片描述
*代表所有用户
除user组用户用读写权限,其它用户只读
用户名必须添加在password里边

权限与组分配
1.[groups] #用户分组信息
2.dev=admin,admin2 #dev组两个用户
3.user=user,user2 #user组两个用户
4.[/] #访问仓库根目录
5.@dev=rw #dev可以读写
6.[/web] #访问仓库下的web目录
7.@user=r #user组只能读
8.*= #除了user其他组没有任何权限

Eclipse安装SVN插件
1.插件下载地址:http://subclipse.tigris.org/
2.解压出features与plugins文件夹复制到dropins中相应目录即可

为了管理多个插件
或者在eclipse目录下边新建目录plugins
里边新建svn和uml,将解压的features与plugins文件夹放置在svn下边
在dropins目录下边新建svn.txt 名字无所谓
添加一行
path=D:\Eclipse\eclipse\plugins\svn
注意\是为了转义
或者直接使用相对路径,不是绝对路径
path=plugins\svn

这里写图片描述

锁的使用详解

锁的相关概念
1.锁是一次性行为
2.锁针对特定的副本(保证安全性)
3.锁团队中其它成员可以解锁
加锁
这里写图片描述

锁的添加并不会导致版本的升级,因为只是修改了文件的状态,并未修改文件内容
在服务器端可以看到锁

哪个用户添加了锁,别人不能提交,但是如果加锁的用户提交了新的内容,则自动解锁。所以说锁是一次性的行为

锁针对的是特定副本,和用户没有关系 ,重新下载副本,用加锁的用户是提交不了的。

SVN服务器可以直接解锁

这里写图片描述

锁是服务器端的概念
A成员加锁,B成员可以解锁

用户在提交时可以设置 必须需要锁 。其他用户想要修改必须get lock 才可以编辑

猜你喜欢

转载自blog.csdn.net/qq_19704045/article/details/80304342