您的位置:首页 > 运维架构 > Linux

linux下搭建svn服务器

2013-07-03 17:19 417 查看


一、SVN安装

1.安装包

$ sudo apt-get install subversion

2.添加svn管理用户及subversion组

$ sudo adduser svnuser

$ sudo addgroup subversion

$ sudo addgroup svnuser subversion

3.创建项目目录

$ sudo mkdir /home/svn

$ cd /home/svn

$ sudo mkdir myproject

$ sudo chown -R root:subversion myproject

4.创建SVN文件仓库

$ sudo svnadmin create /home/svn/myproject



$ sudo chmod -R g+rws myproject

注:
如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:

Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied


查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

$ ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

5.本地访问方式及项目导入:

$ svn co file:///home/svn/myproject

或者

$ svn co file://localhost/home/svn/myproject

* 注意:

如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).

//--

下面的命令用于将项目导入到SVN 文件仓库:

$ sudo svn import -m "New import" /home/svn/work file:///home/svn/myproject --no-ignore

一定要注明导入信息



//--------------------------//

6.访问权限设置

修改 /home/svn/myproject/conf目录下:

svnserve.conf 、passwd 、authz三个文件,行最前端不允许有空格

//--

编辑svnserve.conf文件,把如下两行取消注释

password-db = password

authz-db = authz

//补充说明

# [general]

#anon-access = read

auth-access = write

password-db = passwd

其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。

//--

编辑/home/svn/myproject/conf/passwd 如下:

[users]

mirze = 123456

test1 = 123456

test2 = 123456

//--

编辑/home/svn/myproject/conf/authz如下

[groups]

admin = mirze,test1

test = test2

[/]

@admin=rw

*=r

这里设置了三个用户mirze,test1,test2密码都是123456

其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限

7.启动SVN服务

svnserve -d -r /home/svn

描述说明:

-d 表示svnserver以“守护”进程模式运行

-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库

如: svn://192.168.12.118/myproject

这时SVN安装就完成了.


局域网访问方式:

例如:svn checkout svn://192.168.12.118/myproject


二、HTTP:// [apache]

1.安装包 [已安装subversion]

$ sudo apt-get install libapache2-svn

创建版本仓库:

sudo svnadmin create /目录地址

目录地址必须存在,这个就是保存版本仓库的地方,不同的版本仓库创建不同的文件夹即可,比如:

sudo svnadmin create /home/svn/project

本来/home/svn/project这个目录下什么都没有,执行下面的命令之后再去看一下,多出一些文件和文件夹,我们需要操作的是conf这个文件夹,这个文件夹下有一个文件,叫做passwd,用来存放用户名和密码。

然后把这个版本仓库目录授权给apache读写:

sudo chown -R www-data:www-data /目录地址

然后来到打开apache配置文件:

sudo gedit /etc/apache2/mods-available/dav_svn.conf

加入如下内容:

<Location /project>

DAV svn

SVNPath /home/svn/project

AuthType Basic

AuthName “myproject subversion repository”

AuthUserFile /home/svn/project/conf/passwd

#<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

#</LimitExcept>

</Location>

location说的是访问地址,比如上述地址,访问的时候就是
http://127.0.0.1/project
其中有两行被注释掉了,以保证每次都需要用户名密码。

最后一步就是创建访问用户了,建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。

因为conf文件夹下已经存在passwd文件了,所以直接添加用户:

sudo htpasswd -c /home/svn/project/conf/passwd test

然后输入两遍密码,laoyang这个用户就创建好了。

打开/home/svn/project/conf/passwd这个文件,会开到形如如下形式的文本:

test:WEd.83H.gealA //后面是加密后的密码。

创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。

重启apache就可以了。

sudo /etc/init.d/apache2 restart


三、忽略文件

1.svn:ignore
忽略所有.o文件

svn propset svn:ignore "*.o" .


忽略tmp文件夹

svn propset svn:ignore tmp .


忽略多个文件和文件夹(.o,*.lib,*.la等),新建svnignore.txt,内容如下

tmp
vmlinux.lds
romfs
modules.order
modules.builtin
bin
mconf
lxdialog
docproc
split-include
fixdep
conf
autoconf.h
compile.h
bounds.h
System.map
built_time
.sgbuilt_user
.tmp_versions
.depend
*.out
*.o
*.a
*.lib
*.la
*.bin
*.ko
*.*.*
.*.*
.*.*.*


执行

svn propset svn:ignore -F svnignore.txt .(svn propset -R svn:ignore -F svnignore.txt .)
svn commit -m "set ignore"


现在可以看到该忽略的文件都忽略了。
调出图形化忽略界面

export SVN_EDITOR=vim
svn propedit svn:ignore .


四、可能出现的问题:

1.新建组和为用户添加组时,需要重新登录Shell才能生效。

2.commit时出现了Permission denied错误,这时需要在库目录下sudo chmod 777 -R /home/svn/myproject/db设置权限。

参考文档:http://www.subversion.org.cn/svnbook/nightly/index.html

http://wiki.ubuntu.org.cn/SubVersion

http://www.math-linux.com/linux-19/tip-of-the-day/article/svn-how-to-ignore-file-or-directory-in-subversion

http://blog.csdn.net/pythoner/article/details/2876075

http://www.subversion.org.cn/svnbook/1.4/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: