ubuntu上安装调试SVN服务

时间:2024-04-19 19:43:10

        刚成立团队需要临时搭建一台SVN服务器,所以对照网上的一些提示做了下,操作起来不复杂,还是踩了不少坑,顺便原理性了解了下。

        主要操作步骤如下:

1:安装svn

sudo apt-get install subversion

2: 创建svn版本库

先建目录,之后目录中创建respository

sudo mkdir /home/szbullsoft/svn

sudo mkdir /home/szbullsoft/svn/repository

3:修改权限

sudo chmod -R 777 /home/szbullsoft/svn/repository

4:创建版本库

sudo svnadmin create /home/szbullsoft/svn/repository

执行完成后,在/home/ szbullsoft/svn/repository 这个目录下,有如下文件:

Conf  db  format hooks locks 

5:给db权限

sudo chmod –R 777 /home/szbullsoft/svn/repository/db

6: 配置conf

cd /home/szbullsoft/svn/repository/conf

#配置svnserve.conf

sudo vim svnserve.conf

修改前:

修改后:

说明:(去掉前面的#,并且顶格)
anon-access = none 匿名用户不可读
auth-access = write 权限用户可写

password-db = passwd 密码文件为passwd
authz-db = authz
权限文件为authz

7:修改passwd文件,添加用户

Sudo vim passwd

#格式:名字 = 密码

[users]

Kongchengbo = kongcb123

gaohui = gaoh123

8: 修改权限文件authz

sudo vim authz

# 文件修改如下
[groups]

[/]

Kongchengbo=rw

Gaohui=r

9:启动服务

svnserve -d -r /home/szbullsoft/svn/repository

注意这个目录要保持一致哦,之前参照其他人的博客,配置为:

svnserve -d -r /home/szbullsoft/svn --listen-port 81

之后使用客户端访问的时候,一直提示:

或者中文提示:由于目标计算机积极拒绝,无法连接

找了好多人的说法,都是防火墙,网络代理之类的问题,都不能解决,最后发现就是此处配置svnserve的目录是svnserve -d -r /home/szbullsoft/svn,该目录下并没有这些文件:Conf  db  format hooks locks,登录无法执行,都不会提示要输入用户名和密码的!!

10:修改svnserve

修改后,需要重启下svnserve,方式就是先查找id,之后kill,之后再配置:

svnserve -d -r /home/szbullsoft/svn/repository

配置完成后,就可以访问了,单客户端访问也分为两种,http和svn,一般单主机就是svn了,apache会用http,我在工作站电脑上安装的,所以就是svn,如果用http也会失败,提示信息类似9.

此时使用SVN再checkout就会提示要输入用户名和密码了!

11:文件和目录的增加删除操作

登录上,checkout提示没有文件夹

目录不对,改为svn://10.24.32.7/Doc也是一样的。

那我直接根目录下提交一个文件test.txt试试,是可以提交的,别的地方也能checkout出来。

那这个test.txt文件保存在哪里呢,到服务器/home/szbullsoft 目录下,find ./ -name “test.txt”

查找不到文件,那文件在哪里?

文心一言:当你向SVN仓库添加一个文件(比如 test.txt),这个文件的实际内容以及版本历史会被存储在 db 目录下。你无法在仓库的根目录(在这个例子中是 /home/szbullsoft/svn/repository)直接看到文件的最新版本,因为SVN使用了特定的数据库格式来存储这些信息。

那我需要下载Doc目录并添加内容呢,如何实现?

开始我以为要在哪里创建一个目录,试了没成功,后来明白了SVN数据存储原理:文件,文件夹都不是以文件形式存在,而是将数据存储在db库文件中

创建Doc目录简单做法就是:

mkdir Doc 

svn add Doc 

svn commit -m "Creating Doc directory"

之后就可以checkout 目录Doc了