博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu上Subversion的安装和配置
阅读量:7295 次
发布时间:2019-06-30

本文共 3452 字,大约阅读时间需要 11 分钟。

环境:10.10

目的:可本地或通过Web访问Subversion。

SVN最常见的配置模式便是与Apache集成,这样SVN可以采用WebDev协议方式提供服务。主要的好处有:通过Apache以HTTP方式穿透防火墙,便于在互联网环境使用;提供目录的版本控制;纯2进制的文件对比方式等。

1. 安装Subversion

apt-get install subversionapt-get install subversion-tools

2. 安装Apache

apt-get install apache2apt-get install libapache2-svn

3. Apache和Subversion的集成

查看/etc/apache2/mods-enabled/dav_svn.load文件,有mod_dav_svn.so和mod_authz_svn.so这两个动态库说明apache已经加载了Subversion的访问控制模块。如果没有,手动添加。

# Depends: davLoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.soLoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

编辑/etc/apache2/mods-enabled/dav_svn.conf文件

DAV svnSVNParentPath /opt/svnAuthType BasicAuthName "Subversion Repository"AuthUserFile /etc/apache2/dav_svn.passwdAuthzSVNAccessFile /etc/apache2/dav_svn.authzRequire valid-user

创建2个不存在的配置文件。

touch /etc/apache2/dav_svn.passwd
touch /etc/apache2/dav_svn.authz

<Location /svn>  :意思是Subversion版本可用的URL是http://SubversionServerIP/svn

DAV SVN       :告诉Apache是哪个模块响应哪个URL的请求,在这里是Subversion模块

SVNParentPath /opt/svn  :告诉Subversion需要查看的版本库在/opt/svn之下。如果不希望为每个单独的项目都进行单独的设置,可以把所有项目都存放在统一的资源库目录,使用SVNParentPath指令来指定存放所有项目的路径。否则使用SVNPath

SVNPath      :单版本库时使用此项指明版本库的路径,但在多版本库中不要使用此项

AuthType Basic   :认证类型为基本认证,就是用户名和密码

AuthName "Subversion repository"  :认证名称,将在浏览器界面弹出一个对话框,标题为Subversion repository

AuthUserFile /etc/apache2/dav_svn.passwd  :指定使用的认证密码文件,即访问版本库用户的文件,用apache的htpasswd命令生成

AuthzSVNAccessFile /etc/apache2/dav_svn.authz  :设定访问版本库权限的文件

Require valid-user  :要求验证用户,即不能匿名访问。如果没有该语句,则只能第一个用户可以访问新建库

此外,SVNIndexXSLT “/svnindex.xsl”  使用它可以在用浏览器时更好看

4. 在添加了上述内容后,必须重启Apache2 HTTP服务器

/etc/init.d/apache2 restart

5. Subversion建立版本库

mkdir /opt/svnmkdir /opt/svn/repossvnadmin create --fs-type fsfs /opt/svn/repos

运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb。

如果一切正常,命令执行后没有任何反馈信息而迅速返回。一个新的版本库就被创建出来。我们可以查看下版本库里有什么。

其中,db 目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者 FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion 的命令可以安全的操作这个目录;另外,hooks 目录存放着钩子脚本及其模版(一种版本库事件触发程序),locks 目录存放着 Subversion 版本库锁定数据,用来追踪存取文件库的客户端;format 文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

注意:库与库之间不能包含。

6. Subversion添加用户

添加第一个用户,要加参数-c。以后不用加。

htpasswd -c /etc/apache2/dav_svn.passwd licg

Subversion追加用户:

htpasswd -c /etc/apache2/dav_svn.passwd user

7. Subversion分配用户权限

新添加的用户是不能访问Subversion的,还要为他分配权限。编辑etc/apache2/dav_svn.authz文件,例:

[groups]admin = licgdevelop-manager =developer =[repos:/]@admin = rw* = r[repos:/develop]@admin = rw@developer = rw* =

其中* = 表示其它所有用户都没有任何权限。@表示用户组,*表示所有用户,[/]表示全部目录。注意顶格写。UTF-8格式才能配置SVN权限,Linux下默认是UTF-8,Windows下有转换工具,比如Eclipse->Edit->最后一项。一般针对最末梢文件设置权限。

特别注意:权限分配时,不能写成cen, huang =r,这样提交时会出现错误:svn Commit failed checkout of 403 forbidden。应该写成cen = r和huang = r

8. Subversion启动

svnserve -d -r /opt/svn

Subversion 设计了一个抽象的网络层,版本库建立完毕之后,可以通过各种服务器向外公布。svnserve 是 Subversion 自带的一个小型的服务器,它使用独立的协议与客户端。–i 作为 inetd 启动。-d参数表示svnserve将会作为一个服务程序运行在后台。-r参数表示将/opt/svn指定为代码库的根目录。这样,当客户端使用类似svn://192.168.1.100/repos这样的URL访问服务器的时候,其所访问的真实库是/opt/svn/repos。另外如 --listen-port,--listen-host 可以指定绑定的地址和端口,-R 可以强制设定为 Read-Only 模式。

下面命令可检查是否成功启动:

ps -ef | grep svn

9. SVN客户端的安装及简单使用

TortoiseSVN下载地址:

在Win7上新建文件夹作为本地副本的存储目录,单击右键,选择TortoiseSVN->Repo-browser,在弹出框URL中添加Subversion的访问地址http://ServerIP/svn/repos

Check Out取出服务器上的版本库到本地。

详细使用见

chown -R www-data:www-data /home/svn/repos

可解决在客户端提交时出现subversion can't open file “xxx”Permission denied的问题

转载于:https://www.cnblogs.com/sodu88/p/Ubuntu_Install_Subversion.html

你可能感兴趣的文章
win10远程桌面连接
查看>>
[转]Web Service与WCF区别
查看>>
vs2010 .net4.0 错误 事件的显式接口实现必须使用事件访问器语法
查看>>
BZOJ1090:[SCOI2003]字符串折叠——题解
查看>>
Python网络爬虫-爬取微博热搜
查看>>
js 与或运算符 || && 妙用
查看>>
react-conponent-secondesElapsed
查看>>
DFS 10.1.5.253 1501
查看>>
vue 项目分享
查看>>
smb
查看>>
3.算法-二叉树遍历
查看>>
File类
查看>>
基于层次关联的鲁棒多目标跟踪
查看>>
Python基础---异常
查看>>
动态调用WebService 通用方法Moss 中 传统开发中都可用。
查看>>
【cocos2d-x 024】 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
查看>>
概述C# Cast()
查看>>
LeetCode - 9. Palindrome Number
查看>>
IOS的 new Date()格式化问题
查看>>
sharepoint webpart 获取文档库下的所有文件夹名
查看>>