ubuntu下安装svn提供HTTP版本管理服务

相关的文章很多,不打算重复的去造轮子,做无谓的用功,而且即使造出了轮子也很可能会被认为是拷贝,所以仅仅将几个容易出问题的地方做一下补充。

引用1:关于如何安装和配置,详细见 http://www.howtogeek.com/howto/ubuntu/install-subversion-with-web-access-on-ubuntu/

引用2:关于svn的一些基本操作,详细见 http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.tour.importing

引用1中提到/etc/apache2/mods-enabled/dav_svn.conf的配置,要注意的是<Location /svn> 是一个根配置元素,在dav_svn.conf文件的末尾还有个</Location>元素,不过也被注释了,要记得把它uncomment掉。

引用2中,在初始化svn repository的时候,主要用到两个命令,一个是

svnadmin create 库目录


以创建svn库。

另一个是

svn import 待检入目录 file:///库目录


将本地文件导入前面创建的库目录。

当配置好之后,可以通过浏览器来访问svn,比如http://localhost/svn/,可以看到subversion, 版本0之类的信息。

如果从客户端向url: http://localhost/svn/导入时,发生了类如

引用

Can't open file '/home/xx/applications/svn_server/xx/txn-current-lock': Permission denied


这样的错误,那是因为运行apache的用户对创建的库目录没有写权限,需要做一下授权。策略可以是将库目录chown给apache运行用户,或者将apache运行用户加入到库目录创建用户所在的组中,然后赋给组以写的权限,用chmod 775 组 的命令来搞定。

查看谁运行apache2

ps aux | grep apache


ubuntu下通常是www-data这厮。

如何将一个用户加入到组:

sudo gedit /etc/group


会看到group1:x:1000:user1,user2类似这样的信息,就是说user1,user2同属于group1,多个用户用逗号分隔。保存后记得注销系统,使配置生效。

补充一点,如果你想让dav支持多个svn repository库,那么把dav_svn.conf配置中的SVNPath元素注释掉,改用SVNParentPath

SVNParentPath /home/xxx/applications/svn_server/projects


这样你就可以在/home/xxx/applications/svn_server/projects目录下建立多个svn repository,比如repo1,repo2,然后通过这样的方式来访问不同的库

http://localhost/svn/repo1
http://localhost/svn/repo2

其实配置很简单,轻轻松松就可以在自己的机器上实现代码版本控制。

如果想要实现https这种安全的方式,比如把repository放到公网上,以进行分布开发,svn也是支持的,可以参考这方面的文章。





猜你喜欢

转载自seemoon.iteye.com/blog/293540