linux svn安装和配置

摘要:
yuminstallsubversionhttpdmod_ dav_ Svn描述:subversion httpdmod_dav_ SvnStep2:基本Svn服务器配置最常用的命令是svnadmin。此命令提供创建Subversion版本库的功能。此程序允许您维护这些版本库。灵活性通常带来复杂性。与svnserve相比,Http需要更多的配置。因为Subversion需要版本控制,所以标准HTTP协议无法满足要求。因此,接下来要做的是在Location标记中使用authz函数:在Location标签中添加以下配置:AuthzSVNAccessFile/home/svntest/repos/conf/authz,其中AuthzSVNAccessFile指向svnserver服务中使用的权限配置文件。有关详细信息,请参见svnserver的一般配置过程。

svn概述

众所周知,svn是一种集中式的版本控制工具,是cvs的改进版,那么svn相比cvs的好处在哪里呢?

  • 基于目录的版本控制系统(传统的CVS都是基于单个文件进行版本控制的,而SVN可以随意去除任何一个文件、目录的任何一个历史版本)
  • 原子提交(提交多个文件时,如果一个文件发生冲突,则其他修改都不会被提交)
  • 高效的分支与标签
  • 多种访问方式(svn提供了一个抽象的网络访问层,可以通过不同的写来来对其进行访问)
  • 对二进制文件的支持
  • 平台无关

svn在linux下的安装

Step1:安装必须的包

这里的linux的发行版是centos 6.4,使用yum源进行安装。

  • yum install subversion httpd mod_dav_svn

说明:
subversion (SVN服务器)
httpd mod_dav_svn (用于支持WEB方式管理SVN服务器)

Step2:基本的SVN服务器配置
这里最常用的命令是svnadmin,这个命令除了提供创建Subversion版本库的功能,这个程序使你可以维护这些版本库。
其中在你无网络,无google的情况下,最实用的命令就是svnadmin help

1, 建个svn的根目录,因为项目不止一个

  • mkdir -p /home/svntest/

2,新建一个新的空的版本仓库(subversion repository)

  • svnadmin create /home/svntest/repos

3,初始化版本仓库中的目录

  • svn import /home/svntest/repos/file:///home/svntest/repos -m “初始化SVN目录”

4,添加用户
要添加SVN用户非常简单,只需在/home/svn/svntest/repos/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:

linux svn安装和配置第1张

3,修改用户访问策略

/home/svntest/repos/conf/authz记录用户的访问策略,这里主要是给上步配置的用户权限,这里的配置见下图。

linux svn安装和配置第2张

说明:r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

4,修改svnserve.conf文件,让用户和策略配置升效.
tips:首先检查svnserve.conf文件,看有没有把password-db = passwd前对#去掉,并且要顶格;authz-db = authz同理。否则可能会出现svn: 认证失败。

linux svn安装和配置第3张

5,经历了上述步骤之后,我们需要一个 Subversion server 来服务这个 repository,使得外界的客户端可以访问这个 repository。

  • svnserve -d -r /home/svntest

说明:在这里特别的要注意,/home/svntest是仓库的根目录;另外这时候启动svn的server是svn自己提供的独立服务器,通过svn://来访问。

6,忙乎了这么久,测试一下吧

  • svn co svn://localhost/repos repos

svn server对http的支持

通过上述步骤之后,只是svn可用,但是还不能通过浏览器http来访问svn。
通过 Http 协议访问版本库是 Subversion 的亮点之一。使用 Http 协议意味着只需要打开浏览器,输入 URL 即可轻松的浏览整个版本库。灵活通常带来复杂性,Http 方式相对于 svnserve 方式来说需要更多的配置。

由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展。
1,安装apache,即httpd 服务。

2,确认加载一个特殊的模块mod_dav_svn。并测试apache可以正常启动。(以上两步已经通过yum安装过了)

  • #cd /etc/httpd/modules
  • #ls | grep svn
             mod_authz_svn.so
mod_dav_svn.so

3,设置 /etc/httpd/conf.d/subversion.conf

复制代码
a. module的配置
一定要保证下面的两句话存在于配置文件中,否则无法在如svn的模块,就无法访问svn的仓库了:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

b. 仓库目录配置
刚在上述已经配置了repos这个仓库目录
chown -R apache.apache repos(修改svn目录的属主为apache帐号,让apache用户拥有该仓库的所有权)
加入以下配置:
<Location /repos>
DAV svn
SVNPath /home/svntest/repos
AuthType Basic   # 使用基本认证方式,即用户名、密码认证
AuthName "password for svn server"   # 在认证对话框中出现的提示信息
AuthUserFile /home/svntest/repos/conf/pwdfile  #指定上面创建好的存放用户名信息的文件路径
Require valid-user  #限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径
</Location>

c.下面建立可访问用户文件
htpasswd -c /home/svntest/repos/conf/pwdfile yhw
这句是交互式的,会让你输入密码。
d,重起Apache
service httpd restart
复制代码

4,用浏览器访问http://localhost/repos/,输入你刚才输入的用户名密码,就OK了。

5,进行目录访问控制

上面配置只能对Location标签内的路径执行某些动作时进行控制,若希望控制版本仓库中目录访问权限,需要利用mod_authz_svn模块。在上面的subversion.conf中,我们已经激活了该模块。
所以,接下来要做的,就是在Location标签中使用authz功能:

在Location标签中加入如下配置:AuthzSVNAccessFile/home/svntest/repos/conf/authz

其中,AuthzSVNAccessFile 指向的就是svnserve服务时使用的权限配置文件。每一段命名一个版本库和里面的路径,使用“认证用户(组)=权限”的方式描述每个用户(组)访问版本库的级别:r 是只读,rw是可读写,留空是不允许访问。另外,*表示所有用户,可以用于控制匿名用户的访问权限;@表示已经被分组的组名。具体的描述见svn server普通配置过程。

加入AuthzSVNAccessFile选项后,需要重启httpd服务以让其生效。但权限控制文件的内容修改后马上生效,是不需重启httpd服务。

Subversion目录说明:

*dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
*db目录:就是所有版本控制的数据存放文件
*hooks目录:放置hook脚本文件的目录
*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
*conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

Tips:

1,需要注意的是,http和svn方式访问svn的验证是两套不同的验证方式, 通过http访问的账号是Apache http验证的,而且是不需要启动svnserve服务的,一切都已经由dav模块做接口完成数据请求的工作,通过svn客户端以HTTP协议访问版本仓库即可。。 通过svn://访问的账号是svn仓库conf目录下passwd指定的。两个是独立的认证方式。

2,安装时,关闭iptables和selinux,否者会出现"Could not open the requested SVN filesystem"这样的问题

3,svn提交的时候,必须要先add,再commit

4,在使用svn commit的时候,如果不加-m参数,会出现如下错误:

svn: 提交失败(细节见下):
svn: 无法使用外部编辑器取得日志信息;请尝试设定 $SVN_EDITOR 环境变数,或是使用 --message (-m) 或 --file (-F) 选项
svn: 没有一个 SVN_EDITOR,VISUAL 或 EDITOR 环境变数被设定,执行时期的设定中也没有 'editor-cmd' 选项

原因是svn默认都是要填写注释的(空的也行),要你你使用-m填写注释,要么为svn执行对应注释编辑器,第二种对应的解决办法是:设置vim为你的SVM_EDITOR,对应的就是设置环境变量的方法。使用命令 export SVN_EDITOR=vim

参考:

http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/#resources
http://www.ha97.com/4467.html

FIXME, seriously

免责声明:文章转载自《linux svn安装和配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Web在线操作Office文件 (转)使用java生成mapbox-gl可读的vector tile下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下安装mysql-5.7.30详细步骤

前言下面记录了我在Linux环境下安装Mysql的完整过程,实操记录,只为让更多人少踩坑,本次安装版本为:mysql-5.7.30,64位操作系统官网下载地址:mysql-5.7.30-el7-x86_64.tar.gz百度网盘地址:百度网盘地址 提取码:lyqh 1、安装前准备检测系统是否自带mysql [root@localhost /]# rpm -...

Debian下安装配置ATI驱动

先说明一下自己的情况,我机子的显卡为HD2400,内核是自己编译的2.6.23,使用的是unstable的源。以前一直使用vesa驱动,觉得显示效果也还是相当可以的,毕竟自己没有那些对于显示效果有太高要求的应用程序。不过既然有显卡,却没有相应的驱动使之发挥最大的效用,实在是有一些可惜,所以一直想着要安装一下ATI的驱动。在ATI的网站了转了一下,下载了官方...

(转)svn检出的时候报 Unable to connect to a repository at URL错误

背景:1.SVN服务器:VisualSVN-Server-2.5.5; 2.SVN客户端:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi;在SVN服务器上,新建一个数据仓库aaa,用户ABC拥有读写权限。 现象: 1.在checkout数据仓库aaa时,出现如下错误: Unable to connect to a...

FTP服务器高级配置

设置FTP服务器的访问限制  /etc/vsftpd/ftpusers  ftpusers :黑名单 其内所有的用户无法登录FTP服务器  如果userlist_enable=YES(主配置文件中设置),user_list黑名单 其内所有的用户无法登录  如果userlist_deny=NO(主配置文件中设置),user_list白名单 其内所有的用户可以...

JavaScript 文件操作方法详解

可以通过浏览器在访问者的硬盘上创建文件,因为我开始试了一下真的可以,不信你把下面这段代码COPY到一个HTML文件当中再运行一下! <scriptlanguage="JavaScript"> <!-- varfso=newActiveXObject("Scripting.FileSystemObject"); fso.DeleteFile...

CVS 用法总结(zz)

这里有份CVS中文手册 http://man.chinaunix.net/develop/cvsdoc_zh/index.html#Top cvs用法总结(1)--cvs命令格式,标志字符和环境 cvs用法总结(1)--cvs命令格式 读书笔记,中文名"版本控制之道-使用cvs",英文名"Pragmatic Version Control-Using CVS...