svn学习记录

贾藻
• 阅读 1141

技巧整理

svn安装

第一步,搭建svn服务器(在centos7环境下)

先查看svn是否安装

svn --version

若没有,则

yum intall subversion -y

在运行一次svn --version确认成功

接下来我们就在服务器创建一个文件夹,用来存放svn版本库。

创建文件夹/home/svn

mkdir /home/svn

创建一个svn仓库

svnadmin create /home/svn/project

可以看到svn版本库创建成功

ls /home/svn/project

下面需要修改这个版本库配置

cd /home/svn/project

1.修改conf/svnserve.conf

vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
  • anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:read
  • auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:write
  • authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 默认值:authz
  • realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
  1. 配置用户名和密码
vi passwd

用户名口令文件由svnserve.conf的配置项password-db指定,默认为conf目录中的passwd。该文件仅由一个[users]配置段组成。配置格式如下

<用户名> = <口令>
[users]
admin = admin
thinker = 123456

这里我们创建2个用户admin、thinker.

  1. 修改配置文件
vi authz
# 添加用户组g_admin,这个组里包含admin这个2个用户 
[groups]
g_admin = admin,thinker


# 版本仓库根目录下用户组`g_admin`的权限设置,会自动递归
[admintools:/]
@g_admin = rw

配置完成之后就可以启动svn服务

svnserve -d -r /home/svn

查看是否启动

ps -aux | grep svn

如果需要重启,先关闭进程再重启即可

kill -9 [svn的pid]

svnserve -d -r /home/svn

window安装tortoisesvn

官网注意下载页面下方有语言包,需要汉化直接下载

请参考菜鸟教程-TortoiseSVN 使用教程

svn仓库目录规范

svn://proj/
  |
  +-trunk
  +-branches
  +-tags  

所有的开 发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。

当下一个版本/阶段的开发任务开始,继续在trunk 进行开发。此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。

分支是创建在svn服务器的repository上,而merge是合并在开发者本地

svn上每个提交版本,都对应一组操作,你可能在本次提交中修改、新增、删除了某些文件,这些操作和这个版本对应,当进行Merge的时候,是将这些操作应用到本地Working copy中,这就是“合并”的本质:将某个版本(或者某个版本范围)的操作应用到本地的working copy!理解这点很重要!(Merge的type为“Merge a range of revisions”时的原理)

下面还有一个type为“Merge two different trees”的“合并操作”,本质和上面的类似,这边涉及From和To两个URL,这边的意思是比较以To为基准,从From到To需要经过哪些操作,将这些操作应用到本地的Working copy,比如From里面有个文件a.txt,而To里面没有这个这个文件,那么这边就会有个操作:"delete a.txt",即使不能删除本地的a.txt,但是你如果执意要merge,那么这个删除的操作,肯定会应用到本地的Working copy。如果to里面有个b.txt文件,From里面没有,那么From要到To的话,这边就有一个“add b.txt”的操作,更新的话,类似。

查看当前分支

svn log -v -r 1:HEAD --limit 1 --stop-on-copy

常见问题

  • 每次commit前先执行update,跟git push前先 git pull差不多
  • 遇到权限不足,可能是没有关闭selinux
点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
svn版本控制
一、svn(后悔药)1、介绍SVN全名Subversion,即版本控制系统。它将数据放置在一个中央仓库(repository)中。这个仓库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把数据恢复到旧的版本,或是浏览文件
Easter79 Easter79
4年前
svn本地文件夹断开服务器连接
使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除:建立一个文本文件,取名为killsvnfolders.reg(扩展名由txt改为reg),文件的内容如下:WindowsRegistryEditorVersion5.00
Easter79 Easter79
4年前
svn服务器搭建
1.安装SVNcentos安装:yuminstallsubversionubuntu安装:aptgetinstallsubversion2.安装成功后,创建仓库存放目录,例如:mkdirp/opt/svn/创建SVN仓库,例如创建仓库"repos":mkdirp/opt/svn/rep
晴雯 晴雯
2年前
Cornerstone (SVN管理)for Mac版
使用CornerstoneforMac的主要原因是它是一款功能强大的SVN(Subversion)客户端软件。SVN是一个版本控制系统,用于管理和控制源代码版本。使用SVN可以帮助团队协作开发,保证代码的质量和稳定性。以下是使用测评:Cornerstone
Stella981 Stella981
4年前
Git基础考试题
Git:1.在windows上搭建git环境,成功后查看版本号Linux安装sudoaptgetinstallgityyuminstallgitywindows直接安装exe查看版本号:gitversion2.git与svn的区别(1)git是分布式的,svn是集中式的(2)git把内容按元数据的方式
Easter79 Easter79
4年前
Stella981 Stella981
4年前
Easter79 Easter79
4年前
SVN使用教程(初阶)
1.安装1.1.查看版本svnversion1.2.命令安装yuminstallsubversion2.SVN创建版本库2.1.创建版本库svnadmincreate/usr/local/svn/apocalypse2.2.修改默认配置文件配置
Stella981 Stella981
4年前
SVN使用教程(初阶)
1.安装1.1.查看版本svnversion1.2.命令安装yuminstallsubversion2.SVN创建版本库2.1.创建版本库svnadmincreate/usr/local/svn/apocalypse2.2.修改默认配置文件配置
Stella981 Stella981
4年前
GitHub和SVN的区别
GitHub和SVN的区别之前用的版本控制系统是SVN,但是最近因为流行使用GitHub,这篇文章认识一下Git和SVN的区别。1)Git是分布式的,SVN不是: 这是git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上
Stella981 Stella981
4年前
Eclipse分享和检出(六)
一、创建资源库位置1.  切换到透视图SVN资源库:WindowShowViewOther,搜索“SVN资源库”2.  创建资源库位置,右键新建资源库位置3\.输入可用的版本库地址:svn://localhost/OA此时可以查看版本库中的文件及目录结构。二、检出FileImport.