SVN是Subversion的简称,一个开源的版本控制系统,采用分支管理系统。设计目标是取代CVS。其作用简单说就是:多人协同项目开发,共享资源。
首先一点,简单,支持中文,学习成本小。这也是优点啊!而且是很大的优点。另外还有的界面统一,操作方便等优点。与热门的Git比起来,SVN也有其独特的优势。通常来讲,SVN更适合公司中的项目管理,团队成员共同维护公司的中心版本。而Git更适合于开源项目,每个参与者都可以维护自己专属的版本。
前情提要:本文SVN服务器搭建是搭建在Ubuntu14.04系统上的,其他版本大致类似。
安装命令:
$ sudo apt-get install subversion验证安装是否成功的命令:
$ svn help //查看帮助 $ svn --version //svn版本 $ svnsever --version //svn服务器版本例如:输入svn --version命令后输出如下:
svn,版本 1.8.8 (r1568071) 编译于 Aug 20 2015,12:51:30 在 x86_64-pc-linux-gnu 版权所有 (C) 2013 Apache 软件基金会。 此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。 Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。 可使用以下的版本库访问模块: * ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证 - 处理“svn”方案 * ra_local : 访问本地磁盘的版本库模块。 - 处理“file”方案 * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.3 - 处理“http”方案 - 处理“https”方案表示安装成功。
创建命令:
$ mkdir /home/svn $ svnadmin create /home/svn/svnname //svnname可以根据自己项目自定义创建版本库后,配置文件会自动生成在/home/svn/svnname/conf目录下。进入该目录后可以发现有创建好的一些文件。其中我们需要关注的三个分别是:svnserver.conf、passwd和authz。
命令:
$ sudo vim svnserve.conf把以下几项前的注释符(#)和空格( )去掉,注意,一定也把空格也去掉。这个很容易被忽略。
anon-access = read auth-access = write password-db = passwd authz-db = authz这里顺便解释以下这几项各自的意思, 首先看前两项:
anon-access = read auth-access = write这两项是用来设置匿名用户和普通用户的权限,很明显read表示可读,write表示可写,还有一个选项是none,表示不可读也不可写。当然,匿名用户你可改为none,不过一般不用管它就行。 接下来两项:
password-db = passwd authz-db = authz这两项中,前者是用来设置服务器的用户名和密码的配置文件的位置的,后者是用来设置分组和组权限的配置文件的位置的,可以自定义,但大多数情况下使用默认的就可以。
命令:
$ sudo vim passwd文件内容如下所示:
### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret在最后仿照示例添加用户名和密码
user1 = 123456 user2 = 123456等号前面是名字,等号后面是密码。
命令:
$ sudo vim authz打开之后的文本如下
[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r在最后添加
manager_groups = user1,user2 //组名可以自定义,等号后面跟成员名字,多个成员之间用“,”隔开。 staff_groups = user3,user4 [/] //可访问的目录 @manager_groups = rw //在此目录下各组的访问权限。 @staff_groups = r //级别低的组当然权限可以设低点。 * = r // 默认的其他人的权限。 [svnname:/media] //某一项目下的组权限设置。 @manager_groups = rw ...命令:
$ sudo svnserve -d -r /home/svn查看是否启动成功的命令:
$ sudo netstat -antp | grep svnserve如果想关闭服务,可以使用命令:
$ sudo pkill svnserve虽然服务器不会轻易重启,但是总会有一些因素会重启的,重启之后要重新开启SVN服务,很麻烦,接下来介绍如何设置开机自启动。
在/etc/init.d目录下建立一个脚本文件svnd.sh 命令如下: $ sudo cd /etc/init.d $ sudo touch svnd.sh $ sudo +x svn.sh $ sudo vim svnd.sh在打开的svnd.sh文件中写入一下内容
#!/bin/bash #svnserve startup svnserve -d -r /home/svn完成之后保存退出。 然后在更新修改权限:
$ sudo update-rc.d svnd.sh defaults这样就可以开机自启动了。
