arch linux svn,Subversion (简体中文)

翻译状态:本文是 Subversion_Setup 的翻译。上次翻译日期:2013-03-04。如果英文版本有所更改,则您可以帮助同步翻译。

"Apache Subversion 是一套功能全面的版本控制系统,最初被设计为CVS的改进版本。其后Subversion的发展大大超出了取代CVS的原始目标,但它的基本模型、设计和接口仍然受到了这一目标的深刻影响。"

本文主要介绍架设svn服务器的方法。有两种流行的svn服务器,内建的svnserve以及更高级的选择——结合了svn插件的Apache。

用于Subversion安装的Apache服务器

目标

这篇指南的目标是结合Apache安装Subversion。选用Apache是因为其提供了单机svnserve不具备的诸多特性。

你将学会使用https协议,比svnserve使用的md5认证更加安全。

你将得到细粒度的控制权。你可以使用Apache的认证限制目录的访问权限。这意味着你可以允许所有文件可读,但仅允许提交trunk,同时对另一组用户赋予提交tags和branches的权限。

你将得到一个自由的源码库查看器。虽然不太给力,但它确实可用。

Subversion团队正在进行无缝webdav集成的工作。不久你就能用任何webdav接口更新源码库中的文件。

安装Apache

这一指南没有涵盖Apache web服务器的安装和初始配置。这一主题包含在here。

安装Subversion

配置 Subversion

创建一个目录

# mkdir -p /home/svn/repositories

编辑 httpd.conf

请确认下列模块加载指令在文件中列出。如果没有请添加它们(通常你只需要添加后两行),保持先后顺序:

/etc/httpd/conf/httpd.conf

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

用不用SSL?

SSL允许用户使用Apache的AuthType Basic而不必担心有人嗅探密码。

生成证书:

# cd /etc/httpd/conf/

# openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes

然后添加下面的配置到/etc/httpd/conf/extra/httpd-ssl.conf,以便在虚拟主机配置指令中包含它们。

DAV svn

SVNParentPath /home/svn/repositories

AuthzSVNAccessFile /home/svn/.svn-policy-file

AuthName "SVN Repositories"

AuthType Basic

AuthUserFile /home/svn/.svn-auth-file

Satisfy Any

Require valid-user

为了确保SSL设置已加载,取消/etc/httpd/conf/httpd.conf中SSL配置行的注释:

Include /etc/httpd/conf/extra/httpd-ssl.conf

创建/home/svn/.svn-policy-file

[/]

* = r

[REPO_NAME:/]

USER_NAME = rw

/部分中的*用来匹配匿名用户。对除只读以外的任何访问Apache AuthType Basic都会提示输入用户名和密码。REPO_NAME:/一节继承了之前的权限设置,于是匿名用户对其有只读权限。最后一项设置为用户USER_NAME授予来REPO_NAME源码库的读写权限。

创建/home/svn/.svn-auth-file

这个文件可以用htpasswd或htdigest创建。这里使用了htpasswd。同样,因为SSL,不用过多担心密码嗅探。htdigest甚至会对嗅探提供更好的安全特性。

# htpasswd -cs /home/svn/.svn-auth-file USER_NAME

以上创建了文件(-c)并使用SHA1保存密码(-s)用户USER_NAME被创建。要添加其他用户,可以去掉 -c 选项:

# htpasswd -s /home/svn/.svn-auth-file OTHER_USER_NAME

创建源码库

# svnadmin create /home/svn/repositories/REPO_NAME

设置权限

对Apache用户设置新源码库的权限:

# chown -R http.http /home/svn/repositories/REPO_NAME

创建项目

项目的目录结构

创建 branches tags trunk 目录结构:

$ cd /path/to/directoryofchoice

$ mkdir branches tags trunk

将源码添加到目录

将源代码文件放入创建的 trunk 目录:

$ cp -R /home/USER_NAME/project/REPO_NAME/code/* trunk

导入项目

测试SVN检出

$ cd /path/to/directory_of_choice

$ cd ..

$ rm -rf /path/to/directory_of_choice

$ svn co https://yourdomain.net/svn/REPO_NAME/

如果以上所有配置都成功,你应该能得到一个受版本控制的新源码库的副本。

安装Svnserve

安装软件包

pacman -S subversion

创建源码库

创建你的源码库

mkdir /path/to/repos/

svnadmin create /path/to/repos/repo1

初始源码库是空的,如果想导入文件,使用以下命令:

svn import ~/code/project1 file:///path/to/repos/repo1 --message 'Initial repository layout'

设置访问策略

编辑文件/path/to/repos/repo1/conf/svnserve.conf,在[general]中取消以下行的注释或者添加之:

password-db = passwd

你也许想改变对匿名用户的默认设置

anon-access = read

对允许任何人提交的源码库,替换"read"为"write",或者将其改为"none"来禁止所有匿名访问。

编辑文件/path/to/repos/repo1/conf/passwd

[users]

harry = foopassword

sally = barpassword

以上定义了用户harry和sally,分别使用密码foopassword和barpassword,可以按需修改。

启动服务器守护进程

在启动服务器之前,编辑配置文件

/etc/conf.d/svnserve

SVNSERVE_ARGS="-r /path/to/repos --listen-port=4711"

SVNSERVE_USER="user"

(--listen-port标记是可选的,情确认用户对源码库文件有读写权限)

启动服务器:

# systemctl start svnserve

在启动时自动运行:

# systemctl enable svnserve

Subversion备份

Subversion 客户端

wikipedia 维护了一个客户端列表: Wikipedia article

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值