IT Notes‎ > ‎Operation System‎ > ‎Linux‎ > ‎

Subversion on Server(Ubuntu/Fedora)

Subversion 用的太多了,但如何自己建一个服务并使用?


安装

Fedora: yum install subversion
Ubuntu: sudo apt-get install subversion

创建仓库目录

sudo svnadmin create /usr/local/svn/wofs

增添用户

编辑文件 /usr/local/svn/wofs/conf/passwd  添加用户和密码,我这里添加如下语句:
caoyi = helloworldiridium0
sunlangping = sunlangping
以上两行,左边是用户名,右边是密码

访问权限控制——简单

编辑文件 /usr/local/svn/wofs/conf/svnserve.conf,加入如下内容
anon-access = none 
password-db = passwd
事实上,以上两行内容原先的 svnserve.conf 的文本内容中已经有了,只不过处于被注释的状态,取消其注释即可。

更复杂点的分组,还需要修改 authz 文件的内容,参下面一节

访问权限控制——精细

按照上一节的描述设置后,客户端已经可以访问 SVN 了,只不过所有用户的权限都是一样的:对所有目录具有读写权限。如何限定某些用户只能访问某些目录呢?下面将解决这个问题。

  1. 编辑 {svn_home}/conf/svnserv.conf, 打开 authz-db = authz 的注释,使用 authz 验证规则。另外两项的内容同前一节。
  2. 编辑 {svn_home}/conf/authz,

按人设置访问权限:

[/]
caoyi = rw
tianyu =

[/fortianyu]
tianyu = r
注:方括号中是需要设置访问权限的目录,接着就是具体的访问权限设置,如果值为空,表示不可访问。

按组控制访问权限:
# 将成员分成 wangda 和 tianyu 两组
[groups]

wangda = caoyi,zhongbo,mojiawei,lixiufeng,maleibo,jiangxianjun,lixin
tianyu = tianyu

# 通过 @ 符号标识组
[/]

@wangda = rw
@tianyu =

[/fortianyu]
@tianyu = r


启动 Subversion

以指定端口启动某代码仓库的服务:svnserve -d --listen-port 10010 -r /usr/local/share/svn/helloworld
如果不需要指定具体端口和具体某个代码仓库,直接执行 svnserve -d -r /usr/local/share/svn 就可以了。
如过不指定端口,它将使用3690作为默认端口。

客户端

这部分内容没啥记录的,Eclipse 自带的客户端,小乌龟(TortoiseSVN)等等都不错。如果客户端 OS 是 Linux,除了用 Eclipse 带的,再就用命令行吧。

1. 小乌龟的文本比对工具不咋的,可以设置使用其他第三方的比对工具,如下图设置 BCompare 为文本比对工具:
给小无辜

2. 用小乌龟,当本地文件和服务器有冲突时,如何用服务器的文件替换本地文件? 使用右键菜单 TortoiseSVN -> Revert...
3. 用小乌龟,如何修改 SVN 服务器地址?小乌龟右键菜单 TortoiseSVN -> Reloacate.. 

参考

http://www.togaware.com/linux/survivor/Setup_Using.html
Comments