SVN服务器搭建小记

SVN安装:

Yum
install subversion

Mkdir
/Path/Svnrepors/Projet1

创建svn仓库 Svnadmin create /Path/Svnrepors

svn仓库目录结构 |--conf

|--format

|--hooks

|--locks

svn配置文件:Projet/conf/svnserver.conf

[general]配置段中配置行格式如下:

<配置项>
= <值>

anon-access :控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none","none"表示无访问权限。缺省值:read

auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。缺省值:write

password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd

authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz

realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

[sasl]]配置段中配置行格式如下:

svn密码文件:Projet/conf/pass

[users]配置段的配置行格式如下:

<用户名>
= <口令>

注:配置行中的口令为未经过任何处理的明文。

例:              [users]

admin
= admin

thinker
= 123456

svn权限文件:Projet/conf/auth

[groups]配置段中配置行格式如下:

<用户组>
= <用户列表>

用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符 串"@all")。

版本库路径权限段的段名格式如下:

[<版本库名>:<路径>]

如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。

可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段 设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。

版本库路径权限段中配置行格式有如下三种:

<用户名>
= <权限>

<用户组>
= <权限>

* = <权限>

其中,"*"表示任何用户;权限的取值范围为‘ ‘、‘r‘和‘rw‘,‘ ‘表示对该版本库路径无任何权限,‘r‘表示具有只读权限,‘rw‘表示有读写权 限。

注:每行配置只能配置单个用户或用户组。

例:             [groups]

g_admin
= admin,thinker

[admintools:/]

@g_admin
= rw

*
=

[test:/home/thinker]

thinker
= rw

*
= r

以上配置文件保存后就立即生效,不需要重启svnserve服务,且只对svnserve服务有效,即客户端通过前缀为svn://或svn+ssh://的URL访问版本库有效。

启动svn  :svnserve -d -r /Path/Svnrepors/ --config-file /Path/svnserve.conf --log-file /Path/svn.log

SVN+HTTP安装:

Yum
install httpd httpd-devel mod_dav_svn

确保httpd/modules 下有mod_authz_svn.so mod_dav_svn.so

配置http与svn关联的文件(http/conf.d/下):subversion.conf

加载svn需要的两个模块

LoadModule
dav_svn_module     modules/mod_dav_svn.so

LoadModule
authz_svn_module  
modules/mod_authz_svn.so

配置svn访问的虚拟目录:(/svn只是个虚目录,用于区别普通的网站访问)

<Location
/svn>

Dav svn

#----开启DAV模块支持

SVNListParentPath on

#----允许在网页上显示svn父目录list --记住,注释不要和配置项写到同一行,否则会出错..

SVNPath
"/Path/Svnrepors/Projet1"

#----SVN仓库目录

SVNParentPath
"/Path/Svnrepors"

#----SVN仓库父目录,用于多项目管理时(SVNPath和 SVNParentPath只能选择一个不能共存)

AuthType Basic

#----连接类型设置

AuthName "Subversion Repository"

#----连接框提示

AuthUserFile /etc/svn/passwd

#----用户密码文件(svn验证pass和http验证pass的文件格式不同,不能通用)

AuthzSVNAccessFile /etc/svn/authz

#----用户权限文件

Require valid-user

</Location>

创建用户:htpasswd -c AuthUserFile_PATH 
<username>        //如果文件存在则不需要-c参数

权限设置:chown -R apache:apache REPOS_PATH

selinux的设置:chcon -R -h -t httpd_sys_content_t
REPOS_PATH

特别注意:apache的用的认证与密码文件和svn程序用的认证与密码文件不要混用,特别是密码文件passwd,apache的是加密的,而svn的是明文的,搞错了都不能成功访问。apache的认证和密码文件搞对了,就可以成功访问到svn,但是还不能自动更新,svn程序用的认证和密码文件搞对了才能自动更新,且apache用的认证用户与密码必须与svn程序用的用户名和密码一致,否则无法实现自动更新。

SVN迁移、备份与恢复:

1、通过dump

备份:svnadmin dump
REPOS_PATH [-r LOWER[:UPPER] [--incremental]] > dumpfile

还原:svnadmin load
REPOS_PATH < dumpfile

2、通过hotcopy

备份:svnadmin hotcopy
REPOS_PATH NEW_REPOS_PATH –clean-logs (完全备份,包括钩子文件等;如果传递-clean-logs选项,svnadmin会执行热拷贝操作,然后删除不用Berkeley DB日志文件。可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。)

还原:svnadmin hotcopyNEW_REPOS_PATH REPOS_PATH

3、通过svnsync

svnsync进程只需要对源版本库有读权限;它不会尝试修改它。但是,svnsync可以读写访问镜像版本库。

svnsync对于不能作为镜像操作一部分的修改非常敏感,为了防止发生这个情况,最好保证svnsync是唯一可以修改镜像版本库的进程。

配置来源、备份SVN,创建用户:SVNUSER 请确认SVNUSER用户对备份SVN有写入权限。对来源SVN有读取权限,且密码相同。

初始化:svnsync init SVN_REPOS_SOURCE SVN_REPOS_DEST--username USERNAME --password USERPASS

#在备份机器上执行,init为initialize的简写。特别注意:提供给svnsync的URL必须是指向目标和源版本库的根目录,这个工具不支持对版本库子树的镜像处理。

测试数据同步:svnsync synchronize SVN_REPOS_DEST--username USERNAME --password USERPASS

# 注意

# svnsync的最初版本(在Subversion 1.4)有一些缺陷—-用来认证的--username和--password命令行参数同时作用于源和目标版本库。

# 显然,我们无法保证同步的用户认证信息是相同的,如果不一样,用户使用非交互模式(--non-interactive选项)来运行svnsync时会遇到这个问题(PS:也就是认证无法通过)。

# 现在有趣的部分开始了,通过一个单独的子命令,我们可以告诉svnsync将所有镜像的修订版本从源版本库拷贝到目标版本库。

# [35]svnsync synchronize子命令会查看目标版本库特定修订版本的属性,并且检测同步的版本库是哪一个,以及最新镜像的修订版本是0。然后它会查询源版本库,检测其最新的修订版本。

# 最后,它会询问源版本库服务器来开始重演从修订版本0到最新修订版本。svnsync从源版本库服务器得到返回的结果,然后将其作为新的提交转发到目标版本库服务器。

# [35] 要预先警告一下,尽管对于普通读者只需要几秒钟就可以理解下面的输出,而对于整个镜像过程花费的时间可能会非常长。

启用实时同步:svnsync synchronize --non-interactive SVN_REPOS_DEST --username USERNAME --password USERPASS

#在源机器上执行,一般写在hook下的post-commit文件中

# --non-interactive 非交互模式,如果程序需要参数,让程序自行处理

同步时异常终止:svn propdel svn:sync-lock --revprop -r HEAD SVN_REPOS_DEST

#比如出现Failed to
get lock on destination repos, currently held by
‘localhost.localdomain:d1dfeaac-b028-4484-a1ec-ae455ba090e1‘错误

#使用 svnsync
synchronize 同步时异常终止。如:机器停电,断网等。

需要配置的hook文件:

备份机器:

pre-revprop-change:

# 限制只有syncuser用户才能提交版本属性修改到此版本库

$USER = $3

if
[ "$USER" = "syncuser" ]; then exit 0; fi

echo
"Only the syncuser user may change revision properties" >&2

exit
1

# svnsync的通讯议对于源和目标版本库版本历史的不一致非常敏感,因此,虽然svnsync无法要求目标版本库是只读的,[34]最好的办法就是只允许镜像进程修改目标版本库内容。(PS:镜像==来源SVN  目录==备份SVN)

# [34] 实际上,它不是真的完全只读,或者svnsync本身有时间将版本库历史拷入。

start-commit(可选,但建议配上)

# 限制只用syncuser用户才能提交版本修改到版本库

$USER = $3

if
[ "$USER" = "syncuser" ]; then exit 0; fi

echo
"Only the syncuser user may commit new revisions" >&2

exit
1

源机器:

post-commit

svnsync synchronize --non-interactiveSVN_REPOS_DEST --username USERNAME --password USERPASS

# --non-interactive 非交互模式,如果程序需要参数,让程序自行处理

svnsync的几个参数选项:

--config-dir DIR:指导Subversion从指定目录而不是默认位置(用户主目录的.subversion)读取配置信息。

--no-auth-cache:阻止在Subversion管理区缓存认证信息(如用户名密码)。

--non-interactive:如果认证失败,或者是不充分的凭证时,防止出现要求凭证的提示(例如用户名和密码)。这在运行自动脚本时非常有用,只是让Subversion失败而不是提示更多的信息。

--password PASS:指出在命令行中提供你的密码—另外,如果它是需要的,Subversion会提示你输入。

--username NAME:表示你要在命令行提供认证的用户名—否则如果需要,Subversion会提示你这一点。

可能出现的错误:

Transmitting file data
............svnsync: Error while replaying commit:start-commit配置有问题

svnsync: E165006: Repository has not been enabled
to accept revision propchanges;ask the administrator to create a
pre-revprop-change hook:pre-revprop-change配置有问题

时间: 2024-10-10 06:23:15

SVN服务器搭建小记的相关文章

Linux下的SVN服务器搭建

鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装svnserve,命令如下: >yum -y install  subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行 若需查看svn安装位置,可以用以下命令: >rpm -ql subve

SVN服务器搭建和使用

VS2015的官方VisualSVN-5.0.1 插件这里,还是遇到了一些问题,我知道有插件了,但是忽略了开始的版本问题,按时插件安装过程中没有出现意外,故以为"插件安装成功",岂不知此"成功"非彼"成功".由于我用的是VisualSVN-Server-3.5.7-x64,适应的VS版本最新的是2012版,故不适应与VS2015版本的,然后就去下载的最新版本,最终才成功安装实现VS2015和SVN的结合. 对应VS2015的官方VisualSVN

Win7 x64 svn 服务器搭建

SVN服务器搭建和使用   Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 个人认为最好用VisualSVN server 服务端和 TortoiseSVN客户端搭配使用. 点开上面的VisualSVN连接,下载VisualSVN server,如图: https://www

SVN服务器搭建和使用-转载

SVN服务器搭建和使用(一)-转载 原文地址:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找

centos svn服务器搭建

centos svn服务器搭建 1.yum install subversion 2.mkdir -p /opt/svn 3.chmod R 777 /opt/svn 4.svnadmin create /opt/svn/repos #创建一个svn版本仓库repos 5.cd /opt/svn/repos/conf 6.cp -p svnserve.conf ./svnserve.conf.bak 备份一下即将修改的文件 7.vi svnserver.conf 8. anon-access =

SVN服务器搭建(1)

转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,

SVN服务器搭建--Subversio与TortoiseSVN的配置安装 - 新新 - 博客频道 - CSDN.NET (2)

1.  Subversio和TortoiseSVN 简介 Subversio简介: Subversion是一个自由,开源的版本控制系统,可以随意地免费下载.修改.以及重新发布. 是一个通用系统,可以管理任何类型的文件. 服务器运行方式:独立服务器和借助apache. 存储版本数据方式:一种是在 Berkeley DB 数据库中存放数据.另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS. Tortoisesvn简介: TortoiseSVN 是 Subversion 版本控制系统的一个

mac下svn服务器搭建及使用

---------------------------------------------svn服务器搭建mac上创建svn服务器管理 -------------step1$ svnadmin create svndir -------------step2conf > svnserve.conf修改配置 # anon-access = read # auth-access = write # password-db = passwd # authz-db = authz 去掉这几个前面的#和空

SVN服务器搭建和使用(转载)

SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址. windows操作系统下面的二进制文件包一共有5种,如图: 个人认为最好用VisualSVN server 服务端和 To