搭建svn服务以及使用

177 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

平常很少使用svn,为什么要搭建svn呢?因为去年十一二月份左右,因为写论文要用,论文改来改去的版本太多,存的大量文件,我就动手搭了一个svn专门用来修改论文😃(文章是去年总结的)

yum安装subversion

yum install subversion

查看安装版本

svnserve --version

查看安装位置

rpm -ql subversion

创建版本库

创建用于存放版本库的目录

mkdir -p /usr/local/svn

创建svn版本库

svnadmin create /usr/local/svn

创建完后,版本库目录下会生成一些文件,进入conf目录下。conf目录中authz文件是权限控制文件,passwd是帐号密码文件,svnserve.conf是SVN服务配置文件

创建用户

修改passwd文件,加入用户,格式就是“用户名 = 密码”,如: admin = 123

设置用户读写权限

修改authz文件,加入用户权限: 备注: 格式为 账户=权限 rw权限为读.写 , r权限为读

修改svnserver配置文件,启用以上用户和权限设置

svnserve.conf

  • anon-access = read #匿名用户可读 此项一般不推荐启用. 启用后会导致SVN checkout时不用输入用户密码

  • auth-access = write #授权用户可写

  • password-db = passwd #使用哪个文件作为账号文件

  • authz-db = authz #使用哪个文件作为权限文件

  • realm =My First Repository # 认证空间名,版本库所在目录

启动svn服务

svnserve -d -r /usr/local/svn

-r的作用是设置根目录路径,访问svn://x.x.x.x/就能直接到版本库内

svnserver默认端口是3690,需要配置防火墙端口和安全组

TortoiseSVN连接

注意事项:

通常启动SVN服务,仅指定SVN版本库的根目录,如下:

svnserve -d -r /usr/local/svn

然后在/usr/local/svn下创建多个版本库:

cd /usr/local/svn

svnadmin create repos1

svnadmin create repos2

这个时候需要再依次配置repos1和repos2等版本库下的conf/svnserve.confconf/passwdconf/authz文件。

问题便来了,因为大多数的时候,同一个用户需要用相同的帐号和密码去访问不同的版本库,这时的权限配置就不好处理了,以前看其他人的解决方法是在svnserve.conf中指定passwd和authz的路径时用相对路径指到同一个文件。这是一个可行的方法,但新增版本库的时候,就得更改svnserve.conf文件,不方便。

svnserve -h

有一个--config-file参数,这个参数就是用来指定svnserve.conf路径的

只要在启动SVN服务的时候,指定--config-file参数,只要指定了此参数,所有的权限都由参数指定的svnserve.conf控制,而每个版本库conf目录下的svnserve.conf的配置都会忽略掉。

svnserve -d -r /usr/local/svn --config-file /usr/local/svn/conf/svnserve.conf

Authorization failed

出现authorization failed异常,一般都是authz文件里,用户组或者用户权限没有配置好,只要设置[/]就可以,代表根目录下所有的资源,如果要限定资源,可以加上子目录即可

客户端连接

创建版本库

1. 右键 create folder

# 注意不要使用中文目录

2. svn add

3. svn commit

svn有两种存储方式:BDB和FSFS,目前用的最多的是FSFS方式,这种方式的话,一般是存储在\db\revs文件夹下,里面有一堆以版本号命名的文件,如:0、1、2、3、4......,那个就是了

服务启动问题

svnserve: E000098: Can't bind server socket: Address already in use

解决办法一:

killall svnserve

svnserve -d -r /usr/local/svn --config-file /usr/local/svn/conf/svnserve.conf

解决方法二:

启动另一个端口:

svnserve -d -r /usr/local/svn-repo-test --listen-port 3691

使用展示

image.png


🎈🎈🎈

🌹 关注我,你会发现一个踏实努力的宝藏前端😊,让我们一起学习,共同成长吧。

🎉 喜欢的小伙伴记得点赞关注收藏哟,回看不迷路 😉

✨ 欢迎大家转发、评论交流

🎊 蟹蟹😊