svn的管理与维护要点—纯手工编写

简介: 由于在公司要维护阿里云的linux服务器,我们的svn服务器就安在阿里云上面。所以经常会涉及到svn的维护操作。离职的时候编写交接文档,刚好有充足的时间写一篇说明介绍,此说明纯原创,不是从网上复制,手工根据个人理解写出来的。

由于在公司要维护阿里云的linux服务器,我们的svn服务器就安在阿里云上面。所以经常会涉及到svn的维护操作。离职的时候编写交接文档,刚好有充足的时间写一篇说明介绍,此说明纯原创,不是从网上复制,手工根据个人理解写出来的。

这里用作备忘,网络形式就是方便查阅。

1、 如何创建一个新的版本库

 

如果需要新开一个项目。需要创建一个新的库,登录到shell,使用如下命令

svnadmin  create 版本库目录位置

 

说明,svnadmin是svn自带的命令工具。后面的create表示参数(创建)

 

 

目前我们所有库的位置在:/data/svnrepos/,如下所示

 

一个文件夹就是一个库,要创建一个库,就相当于创建一个文件夹(当然得用svn的svnadmin来生成)

 

 

 

示范:我需要创建一个方维团购的版本库

svnadmin create /data/svnrepos/fanwei/

 

结果:会创建一个fanwei的文件夹,文件夹里面带有 conf、db等子文件夹,如下图

 

 

其他人员访问此版本库的路径为:”svn://服务器地址/版本库名称”

 

svn://服务器地址 /fanwei

 

2、 配置新版本库的权限帐号

 

详细请参考网络文章

分别在版本库目录下的conf文件夹下,钩子文件在hooks目录下。

 

关于权限配置这一块,都是遵循svn软件本身的约定。不涉及特殊化环境,所以都是公共约定好的目录,不能去修改目录本身。所以基本上大体看一下网络资料,都有详细的介绍。

 

2.1关于添加帐号了解几个概念。

以下概念就是关系到设置权限帐号的部分,几个关键性概念如下:

 

  •   每个库都有单独的conf文件。也就是单独的帐号,所以需要每建一个新库,就得往这个库中新建一些帐号。这点确实有点麻烦,据说还可以设置一个全局的,设置这些帐号是针对所有库生效,这样子不需要每次新建一个库都得新加一批帐号。由于之前不知道,所以目前使用的是第一种方式。需要设置全局,参考网络文章进行修改。

 

 

  • 每个库目录下面都有conf、db、hooks、locks几个目录。conf目录看后面有介绍。db是这个库的数据,也就是每次修改的代码存储在里面,直接去看是看不到内容的。hooks是钩子,比如post-commit钩子。format文件暂时不清楚用途。我们经常设置用到的目录是conf和hooks。

 

比如xe这个库,我们看到目录结构如下

 

 

切换到xe这个目录下去会看到下面的子目录如下

 

 

 

 

  • 修改配置文件是即时生效的,也就是说,当往配置文件中增加增加或修改帐号后,并不需要重启svn服务器, 这点是很肯定的。可能,svn每次连接认证都是直接读取磁盘上的配置文件来判断帐号权限,并不像php引擎等的配置文件是加载在内存中,修改配置则需要让服务重新加载配置文件(毕竟同时使用svn用户不可能很多,频繁读取磁盘不存在到性能瓶颈)。了解这一点后,当手工配置权限出现问题时,不需要怀疑:是不是没有重启svn服务导致配置文件没有重新被加载,所以没生效? 此知识点可以避免无效的折腾。先找其他原因,可能是配置文件本身没有配对。

 

 

 

 

2.2conf所在的目录下的几个文件介绍

 

  • passwd文件定义了本库下面有哪些帐号。所以需要新加帐号先往里面加
  • authz文件控制哪些帐号访问本库的权限,这些帐号来源于passwd文件
  • svnserve.conf 是一个全局配置文件。其实它里面就是载入passwd和authz文件

 

 

 

当然自己可以修改决定自己使用哪个文件,默认载入是passwd和authz文件。这个配置文件里面还有几个关键项,如下

 

我带有中文注释(服务器上也有这个注释,当新建一个库的时候,其实直接拷贝这个文件来用)

 

备注:auth-access = write 这里注意一下。以前我以为设置读写权限,要填写”write,read”才行。实际上是,带有write权限,就表示默认带有read权限了(因为默认只有先能读才能进行写)。所以填写的值要么是write要么是read,一般设置为write。

 

 

 

2.3以xe项目的版本库为例。下面是库的所在目录

 

 

去conf目录下(在shell模式下使用cd或者ftp方式进入都可以)

 

 

打开passwd文件,内容如下

 

 

格式为:”帐号名=密码”,新加一个帐号,就加一行

 

 

打开 authz这个文件,以配置帐号对本库的权限,authz文件的内容如下

 

 

#符号后面都是注释部分。不用理

对于内容几点说明如下:

 

  • “xegroup = a,b,c” 定义一个用户组,组里面的成员(帐号)来源于passwd文件中的帐号

 

  • @xegroup = rw 就是定义前面定义的组拥有什么权限。rw表示读写。r为读,w为写。

“*=”中的*表示匿名帐号,右侧的空表示没有任何权限。结果就是,匿名帐号对本版本库没有任何权限。

 

 

 

 

 

3、 钩子无法更新到测试网站的问题

用命令切换到测试网站目录

 

cd /data/source_test/test.xeshh.com/

 

看是哪个文件,继续切换到对应文件目录下去

 

手动删掉文件:rm –rf 文件路径

 

 

然后使用更新命令

 

svn update

此命令相当于将svn服务器的重新下载到当前目录(也就是测试环境)

 

备注:需要哪个目录下的文件,就切换到哪个目录去

目录
相关文章
|
安全 数据安全/隐私保护
|
Linux 数据安全/隐私保护 项目管理
阿里云服务器搭建SVN仓库管理项目
最近由于个人学习(新手)需要,方便个人项目管理,想利用自己现有的阿里云服务器对项目进行管理,首先根据自己的需要,先使用svn作为目前暂时的管理方法(相对比较简单)。个人电脑是win10 64位系统,服务器是阿里云CentOS 7.3 64位。
6033 0
|
数据安全/隐私保护
svn配置多仓库统一管理
 以前使用svn的时候会只建一个仓库,然后把所有的项目都放在一个仓库里面。虽然这样也可以实现版本控制,但是随着项目的增多就会发现一个问题,因为整个仓库是有一连串的版本号的,然后项目又是交替进行的,这样就出现了单个仓库版本号断层的问题。
903 0
SVN的WEB管理接口 Submin
Submin 提供了基于 Web浏览器的 Subversion 版本控制系统的管理接口,功能包括用户、用户组的管理、路径权限的设置以及创建新的资料库等等。
1037 0
|
1月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
39 1
|
3月前
|
Apache 项目管理 数据安全/隐私保护
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
46 0
|
7月前
|
IDE Linux 开发工具
从旧服务器迁移svn到另一台新服务器中(linux系统)|遇到诸多坑,已解决
从旧服务器迁移svn到另一台新服务器中(linux系统)|遇到诸多坑,已解决
|
1月前
|
网络协议 Ubuntu Linux
如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问