Linux 下搭建 SVN 服务器

by LauCyun Dec 18,2015 11:31:38 5,206 views

本文主要介绍 SVN 服务器搭建的具体过程。

1 安装 svn

ubuntu@localhost:~$ sudo apt-get install subversion -y

2 创建代码仓库

ubuntu@localhost:~$ sudo mkdir -p /home/svn/project
ubuntu@localhost:~$ sudo svnadmin create /home/svn/project
ubuntu@localhost:~$ cd /home/svn/
ubuntu@localhost:/home/svn$ ll
total 12
drwxr-xr-x 3 root root 4096 Jun  7 15:10 ./
drwxr-xr-x 4 root root 4096 Jun  7 15:10 ../
drwxr-xr-x 6 root root 4096 Jun  7 15:10 project/
ubuntu@localhost:/home/svn$

命令执行完成后,进入 project 目录,输入 ll 查看,显示目录如下:

ubuntu@localhost:~$ cd /home/svn/project/
ubuntu@localhost:/home/svn/project$ ll
total 32
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 3 root root 4096 Jun  7 15:11 ../
drwxr-xr-x 2 root root 4096 Jun  7 15:11 conf/
drwxr-sr-x 6 root root 4096 Jun  7 15:11 db/
-r--r--r-- 1 root root    2 Jun  7 15:11 format
drwxr-xr-x 2 root root 4096 Jun  7 15:11 hooks/
drwxr-xr-x 2 root root 4096 Jun  7 15:11 locks/
-rw-r--r-- 1 root root  246 Jun  7 15:11 README.txt

出现上面现象说明创建成功。

3 修改配置文件的执行权限

修改前的权限:

ubuntu@localhost:/home/svn/project/conf$ ll
total 24
drwxr-xr-x 2 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ../
-rw-r--r-- 1 root root 1080 Jun  7 15:11 authz
-rw-r--r-- 1 root root  885 Jun  7 15:11 hooks-env.tmpl
-rw-r--r-- 1 root root  309 Jun  7 15:11 passwd
-rw-r--r-- 1 root root 4002 Jun  7 15:11 svnserve.conf
ubuntu@localhost:/home/svn/project/conf$

修改后的权限:

ubuntu@localhost:/home/svn/project/conf$ sudo chmod +x authz passwd svnserve.conf
ubuntu@localhost:/home/svn/project/conf$ ll
total 24
drwxr-xr-x 2 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ../
-rwxr-xr-x 1 root root 1080 Jun  7 15:11 authz*
-rw-r--r-- 1 root root  885 Jun  7 15:11 hooks-env.tmpl
-rwxr-xr-x 1 root root  309 Jun  7 15:11 passwd*
-rwxr-xr-x 1 root root 4002 Jun  7 15:11 svnserve.conf*
ubuntu@localhost:/home/svn/project/conf$

4 配置 svn 权限、账户和密码

直接将文件 svnserve.conf 全部内容替换为如下:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

添加新账户:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/passwd
[users]
liuker = 123456

设置账户 liuker 的权限:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/authz
[groups]
manage = liuker

[/]
@manage = rw
*=r

5 启动 svn 服务并查看是否启动正常 

启动:

ubuntu@localhost:~$ sudo svnserve -d -r /home/svn/project/

查看是否启动正常:

ubuntu@localhost:~$ sudo netstat -antp | grep svnserve
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1999/svnserve
ubuntu@localhost:~$ sudo ps -ef | grep svn
root      1999     1  0 15:31 ?        00:00:00 svnserve -d -r /home/svn/project/
ubuntu    2004  1396  0 15:31 pts/0    00:00:00 grep --color=auto svn
ubuntu@localhost:~$

6 开机启动

在 /etc/rc.local 文件中加入如下命令:

/usr/bin/svnserve -d -r /home/svn/project/

7 svn 常用命令

svn up                        //更新文件    
svn commit -m "注释" xxx.txt   //提交文件    
svn add file                  //新建文件并添加到svn    
svn add *.txt                 //(添加当前目录下所有的txt文件)    
svn delete test.txt           //删除test.txt    
svn log test.txt              //查看test文件的log信息    
svn co svn://x.x.x.x ./       //检出一份版本库文件到当前目录    
svn switch --relocate svn://x.x.x.x  svn://x.x.x.x    //重新定位SVN版本库址

 

注意事项:

Windows 访问 svn 时出现:unable to connect a repository at URL

有两种方法可以解决:

(1)右键点击本地的 svn,TortoiseSVN -> Settings -> Saved Data,clear 缓存数据

(2)注释掉 authz-db 然后重启 svn,再次 import,输入用户名和密码,就可以访问 project 中的内容了

 

(全文完)

Tags