一、SVN简介
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
二、安装SVN
[root@localhost ~]# yum install -y subversion
查看安装了哪些文件
[root@localhost ~]# rpm -ql subversion
一大堆
三、建立版本库
subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置。
然后使用svnadmin建立版本库
[root@localhost ~]# mkdir -p /data/svn
[root@localhost ~]# svnadmin create /data/svn
[root@localhost ~]# ll /data/svn -d
drwxr-xr-x 6 root root 86 6月 5 23:40 /data/svn
[root@localhost ~]# ll /data/svn
总用量 8
drwxr-xr-x 2 root root 54 6月 5 23:40 conf
drwxr-sr-x 6 root root 233 6月 5 23:40 db
-r--r--r-- 1 root root 2 6月 5 23:40 format
drwxr-xr-x 2 root root 231 6月 5 23:40 hooks
drwxr-xr-x 2 root root 41 6月 5 23:40 locks
-rw-r--r-- 1 root root 229 6月 5 23:40 README.txt
[root@localhost ~]#
四、配置
4.1 编辑passwd,添加两个用户:xuyuhan,test
[root@localhost ~]# cd /data/svn/
[root@localhost svn]# ls
conf db format hooks locks README.txt
[root@localhost svn]# cd conf/
[root@localhost conf]# ls
authz passwd svnserve.conf
[root@localhost conf]# vim passwd
4.2 编辑权限文件authz,设置chen可读可写权限,test可读
[root@localhost conf]# ls
authz passwd svnserve.conf
[root@localhost conf]# vim authz
4.3编辑svnserver.conf (注意:配置的前面不能有空格,一定要顶格写)
[root@localhost conf]# vim svnserve.conf
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /data/svn :指定认证域,我这里设置的 /data/svn 目录。
五、防火墙开启
这里以iptable防火墻为例 (centos6)
多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题【注意:如果是阿里云,腾讯云的服务器,还需在安全组添加端口开启规则】
vi /etc/sysconfig/iptables
添加配置信息
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
保存退出
systemctl restart iptables.service #重启防火墙使配置生效
六、启动svn服务器
svnserve -d -r /data/svn #无报错提示
启动成功后,可用ps -aux查看服务启动是否成功
ps -ef | grep svnserve
七、客户端访问svn服务器
装个Windows客户端,鼠标右键检出,在版本库下栏输入地址:svn://ip地址:3690/xxxx (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)
也可点后边的…输入账号密码进入版本目录选择,我输入我刚才创建的xuyuhan可读写用户,点确定,进行检出~
由于我没有设置版本目录名称,所以检出一个空目录~
我试着放了个Django目录进去,选择全部文件后进行提交~
此时我删掉该目录后,重新重新检出
八、关闭SVN 方法
这里采取linux杀死进程的方式处理的
[root@localhost conf]# ps -ef | grep svnserve
root 11336 1 0 22:47 ? 00:00:00 svnserve -d -r /data/svn
root 11338 1432 0 22:47 pts/0 00:00:00 grep --color=auto svnserve
[root@localhost conf]# kill -9 11336
[root@localhost conf]# ps -ef | grep svnserve
root 11340 1432 0 22:48 pts/0 00:00:00 grep --color=auto svnserve
发现客户端对服务端的操作都失败了~
[root@localhost conf]# svnserve -d -r /data/svn #重新启动svn服务
九、上传的文件放在SVN服务器的哪个目录下
SVN服务器版本库有两种格式,一种为FSFS,一种为BDB
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息
十、未解决的问题
这里我发现我明明是yum安装的,但是却无法使用systemctl命令来进行启动跟加入开机自启,查看状态也是关闭的,但是能用,奇怪,有知道麻烦帮我解答下哈~不胜感激!
文章摘自csdn各位大佬,还需要继续学习~