Ubuntu下配置SVN方法详解(1/2)

安装svn

  大部分的发行版都已经提供svn套件,Ubuntu可以通过下面的命令进行安装:

 apt-get install svn

  svn套件提供下列一些常用工具:

  svn 一个命令行式的客户端程序;
  svnversion 报告本地工作副本状态(即当前文档的修订版本号)的程序
  svnadmin 用来创建、调整或修复仓库的工具;
  svndumpfilter 用于过滤仓库中的数据
  snvserve 一个定制的、独立的svn服务程序,可以作为一个驻留进程或通过ssh调用,以便他人可以通过其访问仓库。

  三、使用svn

  svn一般使用两种后台服务模式:一种是其自己实现的svnserve,可以通过svn协议访问,另一种是借助mod_dav_svn模块,由Apache http服务器来实现,然后通过HTTP或HTTPS协议来访问。

  1、通过svn协议访问

  svn协议

  客户端若要通过svn协议访问仓库,必须在存放仓库的机器上运行svnserve服务程序。启动该程序后,会监听在3690端口,以响应客户端的访问工作。

 代码如下 复制代码

mkdir /var/local/svndata
svnserve -d -r /var/local/svndata

  注:-d 表示以后台模式运行,-r用于指定服务的根目录。其余参数,请用svnserve -h查看。

  创建仓库

  开始必须先用svnadmin在存放仓库的目录中创建必须的文件,以形成仓库。

 代码如下 复制代码

svnadmin create /var/local/svndata/dev1

  设置授权

  通过svn协议访问远端的仓库,必须建立授权关系。svnserve对于每个仓库,都有一个独立的配置文件和独立的用户、权限管理。权限文件存放在:repository-path/conf/svnserve.conf

  我这里的位置就是/var/local/svndata/dev1/conf/svnserve.conf,缺省的示例配置文件中和选项都是被注释的。

  以下是一个简单的例子:

 代码如下 复制代码

vi  /var/local/svndata/dev1/conf/svnserve.conf
 
[general]
anon-access = read # 允许匿名用户只读访问,若设置为none表示不允许匿名访问
auth-access = write # 通过验证的用户可以读和写
password-db = passwd # 用户保存文件,也可以使用绝对路径来指定位置
authz-db = authz # 权限管理文件
realm = My First Repository # 仓库名称

  注:配置项前面不能有前置空格,否则后续执行svn命令时,会报Option expected错误。

  配置用户和权限

  在svnserve.conf文件中定义的用户和权限配置文件的中加入相关信息:

  配置用户

 代码如下 复制代码

vi  /var/local/svndata/dev1/conf/passwd
 
#定义用户
[users]
#以用户名=密码对方式进行定义
mike = 000000
easylife = 000000

  配置用户权限

 代码如下 复制代码

vi  /var/local/svndata/dev1/conf/authz
 
#定义组
[groups]
#定义属于组的用户
group1 = mike,easylife
 
#可定义仓库中的某个相对路径,如[/],或[/project1]
#若是多个仓库共享一个权限文件,可以用仓库名加“:”开头来定义,如:[project2:/]
#这个project2必须是已经由svnadmin create /path/project2创建好的仓库
 
[/]
#定义某个用户的权限,r是只读、w是可写、留空是不允许访问
mike = rw
#定义某个组的权限
@group1 = rw
#用“*”号表示其他用户
* = r

  注:用户和权限配置文件必须与svnserve.conf中设置的路径相同。若把这两个配置文件放在仓库外,例如:/var/local/svndata/目录,则允许多个仓库共享同样的配置文件。用户和权限配置文件保存后即可生效,不需重启svnserve服务。

  访问仓库

  使用SVN客户端

  进行首次导入

svn import /data0/software/memadmin  svn://192.168.1.109/dev1 -m "initialization"
 
认证领域: <svn://192.168.1.109:3690> My First Repository
“root”的密码:
认证领域: <svn://192.168.1.109:3690> My First Repository
用户名: mike
“mike”的密码:
 
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:
 
   <svn://192.168.1.109:3690> My First Repository
 
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 svn
可以保存加密后的密码。请参阅文档以获得详细信息。
 
你可以通过在“/root/.svn/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)? yes
增加           /data0/software/memadmin/LICENSE.txt
增加           /data0/software/memadmin/apps
增加           /data0/software/memadmin/apps/SaveList.php
......
增加           /data0/software/memadmin/views/memadmin.php
增加           /data0/software/memadmin/index.php
 
提交后的版本为 1。

  注意:Linux下,默认会先以当前用户去验证,若用户名不匹配,可在后续的提示中输入指定的用户名。输入一次用户名后,svn会把验证结果保留在本地的~/.svn/auth/svn.simple目录中,下次使用svn时,就不需要再做验证工作了。(除非修改了远端的验证用户名和密码)

  从SVN仓库签出

 代码如下 复制代码
svn co svn://192.168.1.109/dev1/
 
A    dev1/LICENSE.txt
A    dev1/apps
A    dev1/apps/GetListTime.php
......
A    dev1/views/mem_count.php
A    dev1/views/memadmin.php

取出版本 1。

  2、通过HTTP协议访问版本库

  通过HTTP协议访问版本库是svn的亮点之一,这种方式具备许多svnserve服务器所没有的特性,使用上更加灵活。

  关于mod_dav_svn模块

  由于svn需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与svn协同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展,关于WebDAV的规范和工作原理,可以参考IETF RFC 2518。

  mod_dav_svn是Apache服务器的一个插件模块,作为svn与Apache之间的接口,通过它Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。

  安装和配置

  与使用SVN协议的svnserve不同,要通过Apache访问svn,除了必须已经部署好Apache和svn的基本环境外,当然不可缺少的是Apache的mod_dav_svn模块。

 代码如下 复制代码

#安装mod_dav_svn
apt-get install libapache2-svn libsvn1
 
#启用mod_dav_svn模块
a2enmod dav_svn

  注:Ubuntu缺省是启用mod_dav_svn模块的。

  创建版本仓库

  这与使用SVN协议方式的工作是基本相同的。不同点在于需要让运行Apache的用户拥有SVN仓库根路径的所有权,这样做可以在SVN仓库根路径下创建多个版本库,并且所有版本库都使用同一个用户信息文件和访问权限文件来管理。

 代码如下 复制代码

 cd /var/local/svndata
svnadmin create dev2
chown -R www-data.www-data /var/local/svndata/

  配置mod_dav_svn
vi /etc/apache2/mods-enabled/dav_svn.conf
 
#指定SVN仓库根路径
SVNParentPath /var/local/svndata

  访问SVN

 代码如下 复制代码

#重启Apache
/etc/init.d/apache2 restart

  通过浏览器访问http://ip/svn/repos,即可在浏览中浏览SVN库中的内容。

  加入认证信息

  上面定义的版本仓库,默认是任何人都可以匿名访问,并且拥有完全的写入、读取、修改、提交、删除版本库中信息的权限。因此,我们需要加入认证信息以做权限的管理。HTTP协议版本就提供了简单的客户端认证方式,这可通过Apache配置完成。

  Apache提供了一个htpasswd工具来管理,使用该工具可以创建一个文件,其中存放着用户名和加密后的密码信息。而这些就是svn可以引用的用户了,根据这些用户信息,配合mod_authz_svn模块即可进行目录的访问控制。

  创建存放用户名信息的文件

 代码如下 复制代码

 htpasswd -c /var/local/svndata/passwdfile mike
New password:   <==输入密码
Re-type new password:  <==再次输入密码
Adding password for user mike
htpasswd其它用法

#新增用户
htpasswd -m /var/local/svndata/passwdfile NewUserName
#修改用户密码
htpasswd -m /var/local/svndata/passwdfile oldUserName
#删除用户
htpasswd -D /var/local/svndata/passwdfile oldUserName

  -m是可选的参数,表示强制使用MD5算法加密,当用-c创建用户名信息文件后,即可修改或添加用户信息。

首页 1 2 末页

时间: 2024-09-27 17:26:21

Ubuntu下配置SVN方法详解(1/2)的相关文章

ubuntu下安装配置svn方法详解

1. 安装svn 如果是ubuntu系统,直接 sudo agt-get install subversion 2. 创建svn库  代码如下 复制代码 svnadmin create /home/robin/svn 3. 配置用户.权限 a. cd /home/robin/svn/conf b. vi svnserve.conf , 取消passwd, authz 两行的注释 c. vi passwd , 添加用户 [users] zhanglb = 123 d. vi authz , 配置权

linux中安装和配置SVN方法详解

1.安装软件  代码如下 复制代码 [root@bogon ~]# yum install subversion -y 2.建立版本库目录    代码如下 复制代码 [root@bogon ~]# mkdir /svnroot  //建立版本库目录 [root@bogon ~]# svnserve -d -r /svnroot  //-r 表示把/svnroot 作为根目录,-d表示svnseve将会将会座位一个服务程序运行在后台 建立版本库创建一个新的svn项目 [root@bogon ~]#

thinkPHP中钩子的两种配置调用方法详解_php实例

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

thinkPHP中钩子的两种配置调用方法详解

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

Android编程实现禁止状态栏下拉的方法详解

本文实例讲述了Android编程实现禁止状态栏下拉的方法.分享给大家供大家参考,具体如下: 简介 项目需求APP全屏时,要禁止状态栏的下拉,这个应该是一个普遍的需求了吧,但Android系统没有直接提供给普通APP直接调用的接口.那么我们只能自己想办法增加接口去实现该功能了. 具体实现方法 1. 修改SystemUI 路径:==/frameworks/base/packages/SystemUI//src/com/android/systemui/statusbar/phone/PhoneSta

window/linux下php配置mysql方法详解

window系统配置mysql 无法连接mysql,写了一个测试mysql的php文件如下:  代码如下 复制代码 <?php$link=mysql_connect('localhost','root','root'); if(!$link) echo "失败!"; else echo "成功!";mysql_close(); ?>      结果报错误:Fatal error: Call to undefined function mysql_conn

Ubuntu 修改用户密码方法详解

修改个人密码: 方法1: 在终端运行 usrname@usrname-laptoppasswd:~$passwd usrname 改变口令为 usrname. (当前)UNIX 口令:<输入现在的密码>  输入新的 UNIX 口令: <输入新密码>  重新输入新的 UNIX 口令:<重新输入新密码> passwd:已成功更新密码 (说明:需要修改的用户名是usrname) 方法2: 使用菜单 系统->首选项->个人信息.启动"关于usrname&q

阿里云CentOS/Ubuntu安装配置vsftp软件详解

Redhat/CentOS安装vsftp软件 1.      更新yum源 首先需要更新系统的yum源,便捷工具下载地址:http://help.aliyun.com/manual?spm=0.0.0.0.zJ3dBU&helpId=1692 2.      安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 3.      添加ftp帐号和目录 先检查一下nologin的位置,通常在/usr/sbin/nologin或者/sbin/nologin下. 使

Linode XEN虚拟vps安装配置Ghost方法详解

我的 vps 情况: 操作系统 – CentOS 7 64 位 web 服务器软件 – Apache Ghost1 基于 Node.js,它本身自带 web 服务器,不需要 Apache. 安装 Ghost 主要参照 Ghost 官方帮助2.下载 Ghost$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip解压 Ghost$ unzip -uo ghost.zip -d ghost安装 Ghost$ cd ghost $ n