刚成立团队需要临时搭建一台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了