搭建SVN服务器
1.1、在Windows上搭建SVN服务器
1.1.1、Visual SVN Server

如果您的服务器是Windows系统,那么就可以选择Visual SVN Server

Visual SVN Server官网:http://www.visualsvn.com/server

Visual SVN Server配置起来非常简单。

参考:http://www.jb51.net/article/17365.htm

1.2、在GNU/Linux上搭建SVN服务器
1.2.1、Subversion

Subversion这个命令行工具提供了客户端和服务器。在GNU/Linux上可以统一使用。

参考文档:http://subversion.apache.org/docs

在线电子书:http://svnbook.red-bean.com

1.2.1.1、安装Subversion

Ubuntu上安装Subversion

sudo apt-get install -y subversion

CentOS上安装Subversion

sudo yum install subversion
1.2.1.2、创建数据仓库
mkdir ~/svn

所有的项目都应该存放在这里。

1.2.1.3、启动服务
svnserve -d -r ~/svn

参数说明:

-d 参数让svnserve运行在后台

-r 参数限定了数据仓库,在网络上可以访问的地址。

~/svn指定SVN数据仓库存放的目录位置

这样,SVN的数据仓库的URL是:svn://IP地址/数据仓库目录

1.2.1.4、创建项目仓库
svnadmin create ~/svn/xxx_for_Android

可以创建很多个项目仓库,比如:

svnadmin create ~/svn/xxx_for_Android
svnadmin create ~/svn/xxx_for_iOS
svnadmin create ~/svn/xxx_for_test
svnadmin create ~/svn/xxx_for_product

示例:

运行这个命令之后,发现在对应的文件夹中生成了一堆文件夹和文件,如下:

hooks目录中存放的都是SVN服务端的事件的钩子,这些都是一个可执行文件, 在GNU/LinuxmacOS系统中就是shell脚本或者python脚本, 或者是用C/C++编译的二进制可执行文件。在Windows系统上,必须是.exe或者.bat文件。

创建SVN仓库的时候,已经创建安好了几个钩子模板。就是上面看到的以.tmpl为后缀的文件, 只要将后缀名去掉,然后替换文件内容即可。

需要注意的有两点:

  • 钩子远远不只这些。具体查看文档。一般都是以pre-post-start-为前缀, 后面跟着操作或者事件名称。
  • 出于安全考虑,在这些钩子文件中,不能使用环境变量,比如$PATH环境变量。

这些钩子非常有用,比如可以利用post-commit这个钩子,当提交了代码之后,发起代码审查 或者触发jenkins的触发器,以实现持续集成。

1.2.1.5、初始化项目仓库

SVN手册建议项目使用以下的目录结构:

project
├── branches
├── tags
└── trunk
1.2.1.6、配置访问权限

进入对应项目仓库的conf目录中:

authz文件是权限控制文件

passwd是帐号密码文件

svnserve.conf 是SVN服务配置文件

打开svnserve.conf这个文件,找到以下几行,并把前面的注解符号‘#’去掉, 注意千万在每行的前面别留任何空格。

anon-access = read
auth-access = write
password-db = passwd

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

password-db后的passwd则为定义用户名及密码的文件路径。 这个文件默认跟snvserve.conf在同一个目录。

1.2.1.7、配置用户

如果设置了访问权限为anon-access = none,也就是不能匿名访问,那么就需要设置用户名和密码, 用户名和密码的设置在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

在[users]块中设置用户和密码,格式:帐号=密码

harry和sally这两行分别定义了可以访问这个项目仓库的用户的用户名和密码。 我们可以在下面加上自己的用户名和密码,比如:

### 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
zhangsan= 123456
wangwu = 123456

这样就给了用户zhangsan和wangwu访问这个数据仓库的权限。

1.2.1.8、通过HTTP或者HTTPS访问

要通过HTTP或者HTTPS访问,需要安装Apache服务器的,并配置相应的模块。

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