linux svn安装和配置

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”的条目就可以了。为了测试,我添加了如下内容:

3,修改用户访问策略

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

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

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

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

时间: 2024-10-14 03:49:56

linux svn安装和配置的相关文章

linux SVN安装及配置图解教程

自己有台云服务器,平时的一些学习资料就想通过SVN管理起来,在网上找了不少linux搭建svn的教程,可是没有一篇完整的,感觉总缺点什么或者有点错误,后面自己经过综合与比较,并且多台服务器上面的测试,做了如下教程,供大家参考之后. svn服务器有2种运行方式 1.独立服务器 (例如:svn://xxx.com/xxx): 2.借助apache.(例如:http://svn.xxx.com/xxx): 为了不依赖apache,选择第一种方式-独立的svn服务器. svn存储版本数据也有2种方式:

Linux下安装并配置PPTP客户端

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 在Linux上安装并配置PPTP客户端. 脚本 #!/bin/bash # 脚本作用:交互式自动安装PPTP客户端 # 作者:昨夜星辰 # 创建时间:2015-04-29 # 修改时间:2015-04-29 echo '请输入VPN服务器的相关信息:' echo '(温馨提示:在输入过程中,如果不小心输错了,那么只能通过Ctrl-C终止脚本

[兄弟连技术交流分享]如何在 Linux 上安装和配置Munin

如何在 Linux 上安装和配置Munin Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是 Munin 默认监控的内容.下面跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图

[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看.[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://www.cnblogs.com/wang-meng/p/5814798.html 8, 打开浏览器查看solr可视化界面 到了这里solr就配置好了, 可是我们的IK 分词器还没有配置呢, 如果不配IK分词器的话 它是怎样分词的呢? 我们就来先看一下:  每个字都分成了一个词, 这当然不是我们想要的结果

【1】Kali Linux的安装及配置

爱生活就得够GEEK. ---------------------------------------------------------------完美的分割线-------------------------------------------------------------- 官方文档的筛选 [1]Kali Linux是什么? Kali Linux是一个高级渗透测试和安全审计Linux发行版. Kali Linux 特性 Kali是BackTrack Linux完全遵循Debian开发

linux 下安装编译配置 QT

打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来. 软件环境 Linux:Ubuntu 12.04 X86 QT:4.8.4 关于QT安装 QT的早期版本和现在版本有点变化,提供的文件也不尽相同,最新的版本为5.0,我这里用的是4.8.4,一个完整的QT应该包括QT库.IDE也就是QT creator,在Linux下的安装中,目前看到的主要有三种方法: 1..bin

Linux SVN安装所需创建的文件夹(转)

分类: Linux Linux SVN安装还是比较常用的,于是我研究了一下Linux SVN安装,在这里拿出来和大家分享一下,希望对大家有用. 1. Linux SVN安装所需module:#yum install mod_dav_SVN安装完毕之后发现,在/etc/httpd/conf.d下多出了subversion.conf,以及/etc/httpd /modules下多出了 mod_dav_svn.so和mod_authz_svn.so两个文件,这正是subversion.conf中所需要

如何在 Linux 上安装和配置Munin

Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是Munin 默认监控的内容.下面兄弟连www.lampbrother.net跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图形

linux服务安装与配置(二):安装xinetd服务

linux服务安装与配置(二):安装xinetd服务 xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用来管理多种轻量级Internet服务.telnet服务就是通过xinetd服务来管理的,所以在安装后面telnet服务之前需要先安装xinetd服务. 首先查看是否有安装xinet服务: # rpm -qa | grep xinetd # 没有则使用光盘中rpm包来安装,步骤如下: # mkdir