最近在学习Linux,就用旧电脑装了Ubuntu的系统,同时想把这台电脑做成一台私有服务器,同步代码,所以就尝试了给Ubuntu搭建了SVN。网上有很多教程,都差不多,所以也就大概总结一下。
1、安装apache和SVN
sudo apt-get install apache2
sudo apt-get install subversion
2、安装apache和SVN的连接库
sudo apt-get install libapache2-svn
3、增加SVN的用户组,用于管理SVN,并加入到www-data的apache组
sudo addgroup subversion
sudo usermod -G subversion -a www-data
4、创建svn版本库目录
svnadmin create /var/svn/testproject
然后进入testproject目录,里面会有几个目录。
进入conf目录,这个目录将是该svn库的配置文件。里面的authz文件是权限控制文件,passwd为账户文件。svnserve.conf是svn的配置文件。
5、配置apache文件。路径在:
/etc/apache2/mods-available/dav_svn.conf修改此文件
<Location /testproject>
DAV svn
SVNPath /var/svn/testproject
AuthType Basic
AuthName "svn for testproject"
AuthUserFile /var/svn/testproject/conf/passwd
AuthzSVNAccessFile /var/svn/testproject/conf/authz
Require valid-user
</Location>
6、添加用户
sudo htpasswd -c /etc/subversion/passwd user_name//user_name是需要创建的用户名,接下来会输入密码。
第一次创建用户,需要加入-c,后面添加用户就不用再加上-c了。
7、为用户添加权限,文件是刚才在testproject/conf下的authz文件
[/]
user1=rw
完成后,可能还不能使用,需要重新加载一次
a2enmod authz_svn
a2enmod dav_svn
还有就是修改conf目录下的svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/testproject# 认证空间名,版本库所在目录
这样就基本创建完成了,那么开始启动svn服务器了。
sudo /etc/init.d/apache2 start
这样就可以直接成功了。
上面只是简单的常见了svn服务器,网上有很多文章,可以借鉴。
在使用中,发现创建后,其他用户也能登录,但是却不能创建任何远程文件夹或者提交代码,这时会出现一个类似于:
\db\txn-current-lock的错误。
这时候可以参考一下文章:点击打开链接
在网上搜了好多资料,都说是权限的问题。
“这种错误比较常见,而且一开始我一直以为是自己没有配置好认证权限的问题,我反复的配置10,11两步,结果还是没解决,我在windows下用 tortoiseSVN客户端
一直无法commit和添加文件,老是弹出这个错误。可我在linux下可以用
#svn import …. 这个命令,我一直很纳闷,后来经过琢磨和上网搜索,终于解决。问题在于我的/home/svn目录下的一切子目录和文件都是属于root用户的,而我每次
在linux下也是以root 用户import的,所以一直没有问题。可在windows从客户端访问就有问题了。
解决办法: 把/home/svn目录下的所有文件和子目录添加读写权限
#chmod –R o+rw /home/svn
Okay, 问题解决。现在可以方便从windows下面checkout和commit了。”
这是网上找到资料,因为我的环境就是windows下的,后来折腾了半天,发现是只有拥有管理器权限的人才能对目录进行完全控制,而在windows从客户端访问的话,
因为是Users用户组的,对Repository没有修改权限。
在服务器上把Users对svn目录<的完全控制权限加上就OK了。