安装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 |
访问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其它用法 #新增用户 |
-m是可选的参数,表示强制使用MD5算法加密,当用-c创建用户名信息文件后,即可修改或添加用户信息。
首页 1 2 末页