使用Subversion的svn协议访问

更新时间:2023-05-31 22:40:16 阅读: 评论:0

使⽤Subversion的svn协议访问
儿童网上学英语哪个网站好
昨天讲解了Subversion的基本⽤法,其中把仓库创建在与客户端相同的机器上,使⽤file:///协议进⾏上传和修改的⼯作。实际上,更多时候,仓库应该放在另⼀台远端服务器上的,在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)的多条通道进⾏访问的。这些通道中,可以通过不同的⽹络协议,例如HTTP、SSH等,或本地⽂件的⽅式来对仓库进⾏操作。
Subversion⼀般使⽤两种后台服务模式:⼀种是其⾃⼰实现的 svnrve,可以通过svn协议访问,另⼀种是借助mod_dav_svn 模块,由Apache http 服务器来实现,然后通过HTTP或HTTPS协议来访问。我将要介绍就是第⼀种⽅式。
⼀、svn协议
客户端若要通过svn协议访问仓库,必须在存放仓库的机器上运⾏svnrve服务程序。启动该程序后,会监听在3690端⼝,以响应客户端的访问⼯作。
# svnrve -d -r /var/svn/repos
-d 表⽰以后台模式运⾏,-r ⽤于指定仓库的位置。其余参数,请⽤svnrve -h查看。
⼆、⾃动运⾏svnrve服务
按照上⾯的命令,每次运⾏svnrve都可以启动该监听服务,也可以放⼊/etc/rc.local中让其在机器启动后⾃动运⾏。
但是,⼀般我是不使⽤rc.local来管理类似的服务程序的,所以,我编写了⼀个svnd脚本,将其放⼊/etc/rc.d/init.d⽬录中,通过rvice或chkconfig进⾏管理:
# rvice svnd start
# rvice svnd status
brf是什么意思# rvice svnd stop
# chkconfig --level 35 svnd on
下载地址:
下载⽂件
(源码见最后附录部分)
如果需要改变脚本中仓库的默认路径,可以在/etc/sysconfig⽬录中,定义⼀个svnd的⽂件,例如:
引⽤
# cat /etc/sysconfig/svnd
SVN_HOME=/opt/svn
这样,在启动svnd服务时,会⾃动使⽤该⽬录作为-r参数的指定路径。
※对于其他的系统服务,我都是建议使⽤相同的管理⽅式,即系统服务放在/etc/rc.d/init.d中,额外的参数放在/etc/sysconfig⽬录下,这样对统⼀管理会带来很⼤的⽅便。毕业生电影主题曲
三、使⽤svn协议访问仓库
1、创建仓库
正如访问本地仓库⼀样,开始必须先⽤svnadmin在存放仓库的⽬录中创建必须的⽂件,以形成仓库。
在远端,存放仓库的机器⾏运⾏:
# svnadmin create /var/svn/repos/
创建的⽂件和⽬录有:
引⽤
# ll -a /var/svn/repos/
总计 36
drwxr-xr-x 7 root root 4096 07-01 15:21 .
免费在线
drwxr-xr-x 3 root root 4096 07-01 11:00 ..
drwxr-xr-x 2 root root 4096 07-01 15:21 conf
drwxr-xr-x 2 root root 4096 07-01 15:21 dav
drwxr-sr-x 5 root root 4096 07-01 15:21 db
-r--r--r-- 1 root root    2 07-01 15:21 format
drwxr-xr-x 2 root root 4096 07-01 15:21 hooks
drwxr-xr-x 2 root root 4096 07-01 15:21 locks
-
rw-r--r-- 1 root root  229 07-01 15:
⼀般不要⼿动去更新、删除、添加上述这些⽬录或⽂件的内容,应通过svn客户端来进⾏管理的⼯作。
2、设置授权
若通过svn协议访问远端的仓库,必须建⽴授权关系。svnrve对于每个仓库,都有⼀个独⽴的配置⽂件和独⽴的⽤户、权限管理。该⽂件存放在:
引⽤
ebrarepository-path/f
也就是对应在每个仓库的⽬录下⾯。使⽤svnadmin create创建仓库后,就会在对应的位置创建⼀个⽰范⽂件。
以下是⼀个简单的例⼦:
引⽤
# vi /var/svn/repos/f
[general]
anon-access = read # 允许匿名⽤户只读访问,若设置为none表⽰不允许匿名访问
auth-access = write # 通过验证的⽤户可以读和写
password-db = passwd # ⽤户保存⽂件,也可以使⽤绝对路径来指定位置
authz-db = authz # 权限管理⽂件
realm = My First Repository # 仓库名称
可通过f 获取帮助信息。
※注意,配置项前⾯不能有前置空格,否则后续执⾏svn命令时,会报Option expected错误
然后,在上⾯指定的⽤户、权限配置⽂件中加⼊相关信息:
引⽤
# vi /var/svn/repos/conf/passwd
[urs] # 这是固定格式
linuxing = redflag # linuxing是⽤户名,redflag是明⽂表⽰的密码
harry = harryscret
允许访问该仓库的⽤户都可以在这⽂件中定义,⽽对应⽤户的权限,则在权限配置⽂件中定义:
引⽤
# vi /var/svn/repos/conf/authz
[groups] # 这也是固定格式
urs1 = linuxing,harry # 定义属于组的⽤户
# 可定义仓库中的某个相对路径,如[/],或[/project1]
# 若是多个仓库共享⼀个权限⽂件,可以⽤仓库名加“:”开头来定义,如:[project2:/]
# 这个project2必须是已经由svnadmin create /path/project2 创建好的仓库
[/]
linuxing = rw # 定义某个⽤户的权限,r是只读、w是可写、留空是不允许访问
@urs1 = rw # 定义某个组的权限
* = r # ⽤“*”号表⽰其他⽤户
⽤户和权限配置⽂件必须与f中设置的路径相同。若把这两个配置⽂件放在仓库外,例如:/etc/svn/⽬录,则允许多个仓库共享同样的配置⽂件。
⽤户和权限配置⽂件保存后即可⽣效,不需重启svnrve服务。
3、访问仓库
cage在保证远端svnd服务已经启动的情况下:
引⽤
# rvice svnd start
Starting svnd:                                            [确定]
allbar# rvice svnd status
svnrve (pid 21869) 正在运⾏...
# netstat -ln|grep 3690
tcp        0      0 :::3690                    :::*                        LISTEN
参考前⼀篇⽇志的内容,使⽤svn客户端即可进⾏访问:
引⽤
# svn import /root/perl svn://localhost/project1 -m 'initialization'
“root”的密码:
认证领域:<svn://192.168.228.135:3690> My First Repository
⽤户登录名:linuxing
“linuxing”的密码:
新增          /root/perl/tcp_socket_cli.pl
新增          /root/perl/connect.pl
新增          /root/perl/tcp_socket_dt_srv.pl
提交后的修订版为 1。
# svn list svn://localhost/project1
connect.pl
女王英文tcp_socket_cli.pl
tcp_socket_dt_srv.pl
※注意:Linux下,默认会先以当前⽤户去验证,若⽤户名不匹配,可在后续的提⽰中输⼊指定的⽤户名。输⼊⼀次⽤户名后,svn会把验证结果保留在本地的~/.subversion/auth/svn.simple⽬录中,下次使⽤svn时,就不需要再做验证⼯作了。(除⾮修改了远端的验证⽤户名和密码)
Checkout到本地:
引⽤
# svn checkout svn://localhost/project1
A    project1/tcp_socket_cli.pl
A    project1/connect.pl
A    project1/tcp_socket_dt_srv.pl
取出修订版 1。
# cd project1/
# svn list
connect.pl
tcp_socket_cli.pl
tcp_socket_dt_srv.pl
四、svnd服务脚本
源码:
#!/bin/bash
#
# Init file for SVNrve rver daemon
#
girlicious# chkconfig: 2345 55 25
# description: SVNrve rver daemon
# source function library
. /etc/rc.d/init.d/functions
# pull in sysconfig ttings
[ -f /etc/sysconfig/svnd ] && . /etc/sysconfig/svnd
[ -z "$SVN_HOME" ] && SVN_HOME="/var/svn/repos" SVNSERVE="/usr/bin/svnrve"
prog="svnd"
RETVAL=0
if [ ! -f $SVNSERVE ]; then
echo "svnrve didn't fount."
exit
fi
if [ ! -e $SVN_HOME ] || [ ! -d $SVN_HOME ];then
mkdir -p $SVN_HOME
if [ $? -ne 0 ];then
echo "Create $SVN_HOME directory failure."
exit 1
fi
fi
ca "$1" in
start)
echo -n "Starting $prog:"
$SVNSERVE -d -r $SVN_HOME && success || failure    RETVAL=$?
[ "$RETVAL" = "$?" ] && touch /var/lock/subsys/svn    echo
;;
stop)
echo -n $"Stopping $prog:"
if [ -n "`pidofproc $SVNSERVE`" ];then
killproc $SVNSERVE
el
failure $"Stopping $prog"
fi
RETVAL=$?
if [ "x$runlevel" = x0 -o "x$runlevel" = x6 ] ; then
killall $prog 2>/dev/null
fi
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/svn
echo
;;
restart)
$0 stop
$0 start
化学实验基本操作;;
status)
status $SVNSERVE
;;
*)
echo "Usage: svn { start|stop|restart|status } "
exit 1
esac

本文发布于:2023-05-31 22:40:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/129722.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:仓库   访问   服务   权限   配置   启动
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图