SVN 服务器端的搭建-及多仓库管理

1、首先安装SVN这个软件

1
2
3


apt-get install subversion

2、在home目录下创建一个名为svn的文件夹(文件夹的名字随便起)

1
2
3


sudo mkdir /kk/svn/rda8501_common

3、创建数据仓库(可以根据需要创建多个)

1
2
3


svnadmin create /kk/svn/rda8501_common

4、启动/停止svn网络服务

1
2
3


svnserve -d -r /kk/svn/rda8501_common

其中 -d 参数让 svnserve 运行在后台,-r 参数限定了数据仓库,在网络上可以访问的地址。

/kk/svn/rda8501_common指定svn数据仓库存放的目录位置

1
2
3


sudo killall svnserve

5、设置svn: 方式的访问权限

在每个数据仓库目录下都有一堆目录,进入 conf 并打开 svnserve.conf 这个文件,找到以下几行,

并把前面的注解符号 ‘#’ 去掉,注意千万在每行的前面别留任何空格。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12


anon-access = none       //注意:anon-access = read   如果匿名可读   “TortoiseSVN”  show log会有问题。


auth-access = write


password-db = passwd


realm = /kk/svn/rda8501   //配置服务器路径

其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限。

但如果想拒绝匿名用户的访问,只需把 anon-access的read 改成 none 就能达到目的。

password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在

同一个目录,下面看看怎么配置

passwd文件中的内容

1
2
3
4
5
6
7
8
9


[user]


# harry = harryssecret


# sally = sallyssecret

harry 和 sally 这两行分别定义了可以对 库 进行写入的用户的用户名和密码。我们可以在下面加上

自己的用户名和密码,比如

1
2
3


kk = rad_kk

这样就给了用户 kk 往 repo 中写的权限。存盘退出后,svn 服务器就算正式可以运行了!

把所有需要管理的项目都放在/kk/svn这个目录下,像正常那样用 svnadmin create 命令建立数据仓库。

配置authz: 访问权限

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21


# [repository:/baz/fuz]


# @harry_and_sally = rw


# * = r


[/]


jiangzhaowei = rw





~

checkout-检出的三种方式:

1)

1
2
3
4
5
6


  svn co file:///目录名/库名字                //局域网方式


  svn co file:///kk/svn/rda8501_common         // file 检出实例  橙色标记为 绝对路径

2) IP方式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12


  svn://IP地址/仓库名称


  svn co svn://192.168.1.101/rda8501_common    // 仓库名称不能包含路径字串


  svn co svn://220.231.xx.xx/rda8501_common   // 仓库名称不能包含路径字串 


  svn co -r 356 svn://220.231.xx.xx/rda8501      //检出到版本号为 “356” 的版本

  

checkin:第一次检入

1
2
3
4
5
6
7
8
9


  find . -name .svn | xargs rm -rf              //清除目录下是".svn"文件





  svn import . svn://220.231.xx.xx/rda8501_common -m " "  --no-ignore

  “–no-ignore:可选,如果希望第一次提交时,将目录的所有文件(*.o),都提交上去的话,需要次参数。

6、SVN 多项目仓库管理

在home/www目录下建立多个仓库

1
2
3
4
5
6
7
8
9


svnadmin create home/www/svn1


svnadmin create home/www/svn2


svnadmin create home/www/svn3

#建立后每个仓库下都有conf目录,可分别配置账户、权限等

#只需要启动home/www目录

1
2
3


svnserve -d -r home/www

#svn的url分别是

1
2
3
4
5
6
7
8
9


svn://127.0.0.1/svn1


svn://127.0.0.1/svn2


svn://127.0.0.1/svn3

注意:多仓库管理,访问路径为,svn://IP地址/仓库名称 仓库名称不能包含路径字串

最近升级了下linode,发现svn 不能提交和更新,报svn: E000061: Unable to connect to a repository at URL这样的错误,后来查了些资料,原来是svn的端口没有打开,svn的默认端口是3690,在ubuntu里查看端口打开情况,命令是 netstat -anp,把svn服务重新启动下就可以了,命令为svnserve -d -r /home/svn

启动svnserve服务

1、创建服务

在/usr/lib/systemd/system/添加svnserve.service文件,文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


[Unit]


Description=Subversion


protocol daemon


After=syslog.target


network.target


[Service]


Type=forking


EnvironmentFile=/etc/sysconfig/svnserve


#下面的路径一定要写svnserve命令的绝对路径


ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -d -r /home/svn


[Install]


WantedBy=multi-user.target

2、开机自动启动设置

1
2
3


systemctl enable svnserve.service

3、其它、

Description:描述服务After:描述服务类别

[Service]服务运行参数的设置

Type=forking是后台运行的形式ExecStart为服务的具体运行命令- ExecReload为重启命令ExecStop为停止命令PrivateTmp=True表示给服务分配独立的临时空间注意:[Service]的启动、重启、停止命令全部要求使用绝对路径

启动svnserve服务

1
2
3


systemctl start svnserve.service

设置开机自启动

1
2
3


systemctl enable svnserve.service

停止开机自启动

1
2
3


systemctl disable svnserve.service

查看服务当前状态

1
2
3


systemctl status svnserve.service

重新启动服务

1
2
3


systemctl restart svnserve.service

查看所有已启动的服务

1
2
3


systemctl list-units --type=service