Linux操作文档——SVN版本控制服务

    技术2022-07-11  101

    文章目录

    一、SVN基本操作1、软件安装2、创建版本库目录3、针对不同版本库修改配置文件4、配置用户和密码及认证权限5、服务SVN启动及创建测试代码6、代码添加 二、SVN+Apache1、查看apache对svn模块的支持2、配置apache支持svn3、创建用户passwd文件4、创建权限authz文件5、启动服务测试


    一、SVN基本操作

    1、软件安装

    [root@localhost ~]# yum -y install subversion httpd mod_dav_svn [root@localhost ~]# cat /etc/services | grep svn svn 3690/tcp # Subversion svn 3690/udp # Subversion svnetworks 2973/tcp # SV Networks svnetworks 2973/udp # SV Networks svnet 3413/tcp # SpecView Networking svnet 3413/udp # SpecView Networking ml-svnet 4171/tcp # Maxlogic Supervisor Communication

    2、创建版本库目录

    [root@localhost ~]# mkdir /webdept [root@localhost ~]# svnadmin create /webdept/www.backup01.com [root@localhost ~]# svnadmin create /webdept/www.backup02.com [root@localhost ~]# ls /webdept/www.backup01.com/ conf db format hooks locks README.txt 目录说明dav目录提供apache与mod_dav_svn使用的目录db目录所有版本控制的数据存放文件hooks目录放置hook脚本文件locks目录放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端format文件是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号conf目录是这个仓库的配置文件(仓库的用户访问账号、权限等) [root@localhost ~]# ls /webdept/www.backup01.com/conf/ authz passwd svnserve.conf       //authz:认证权限相关;passwd:用户名和密码;svnserve.conf:服务器配置文件

    3、针对不同版本库修改配置文件

    [root@localhost ~]# vim /webdept/www.backup01.com/conf/svnserve.conf       //修改配置文件 anon-access = read       //匿名用户可以读(none:匿名用户不可以访问) auth-access = write       //认证用户可以写(read,write,none) password-db = passwd       //密码库文件,默认使用的是同一目录下的passwd文件作为用户密码库 authz-db = authz       //认证权限文件 realm = www.backup01.com       //登陆提示信息

    注意:此配置文件的所有内容必须顶格,否则会报错

    4、配置用户和密码及认证权限

    [root@localhost ~]# vim /webdept/www.backup01.com/conf/passwd [users] zhangsan = 123456 lisi = 123456 wangwu = 123456 [root@localhost ~]# vim /webdept/www.backup01.com/conf/authz [groups] Check = zhangsan,lisi       //定义组,在[groups]下面添加 [/]       ///表示我当前所在版本库目录,这里代表www.backup01.com wangwu = rw        @Check = r       //@Check表示这个组的权限 * =       //除了上面的有赋予权限成员之外,其他的成员都没有权限

    5、服务SVN启动及创建测试代码

    [root@localhost ~]# svnserve -d -r /webdept/       //启动了所有版本库 [root@localhost ~]# ps -aux | grep svn root 11731 0.0 0.0 197812 1040 ? Ss 16:19 0:00 svnserve -d -r /webdept/ root 11739 0.0 0.0 112824 980 pts/0 S+ 16:19 0:00 grep --color=auto svn [root@localhost ~]# netstat -antup | grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 11731/svnserve [root@localhost ~]# mkdir localsvn [root@localhost ~]# cd localsvn/ [root@localhost localsvn]# touch 1.html 2.html [root@localhost localsvn]# cd [root@localhost ~]# svn import /root/localsvn/ file:///webdept/www.backup01.com/ -m "first edit"       //本地导入代码,使用file,仅仅能在服务器本地导入,首次加入代码使用import 正在增加 localsvn/1.html 正在增加 localsvn/2.html 提交后的版本为 1。 [root@localhost ~]# svn checkout svn://192.168.1.10/www.backup01.com/downsource 认证领域: <svn://192.168.1.10:3690> www.backup01.com “root”的密码: 认证领域: <svn://192.168.1.10:3690> www.backup01.com 用户名: zhangsan “zhangsan”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.1.10:3690> www.backup01.com 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?n A downsource/1.html A downsource/2.html 取出版本 1。

    6、代码添加

    [root@localhost ~]# cd downsource/ [root@localhost downsource]# touch 5.html [root@localhost downsource]# svn add 5.html A 5.html [root@localhost downsource]# svn commit -m "second edit" 认证领域: <svn://192.168.1.10:3690> www.backup01.com “wangwu”的密码:        //只有wangwu拥有上传权限 ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.1.10:3690> www.backup01.com 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?n 正在增加 5.html 传输文件数据. 提交后的版本为 2。

    二、SVN+Apache

    1、查看apache对svn模块的支持

    [root@localhost ~]# vim /etc/httpd/conf.modules.d/10-subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so LoadModule dontdothat_module modules/mod_dontdothat.so [root@localhost ~]# ls /etc/httpd/modules/mod_dav_svn.so /etc/httpd/modules/mod_dav_svn.so [root@localhost ~]# ls /etc/httpd/modules/mod_authz_svn.so /etc/httpd/modules/mod_authz_svn.so

    2、配置apache支持svn

    [root@localhost ~]# vim /etc/httpd/conf.d/subversion.conf <Location /webdept> DAV svn SVNParentPath /webdept       //svn根目录 AuthType Basic       //Basic认证方式 AuthName "www.backup01.com website Dept"       //认证显示信息,提示信息 AuthUserFile /webdept/svn/passwd       //用户密码文件 AuthzSVNAccessFile /webdept/svn/authz       //访问控制权限文件 Require valid-user       //要求正式用户,不能匿名 </Location>

    3、创建用户passwd文件

    [root@localhost ~]# mkdir /webdept/svn [root@localhost ~]# htpasswd -c /webdept/svn/passwd user1       //第一次用c,创建 New password: Re-type new password: Adding password for user user1 [root@localhost ~]# htpasswd /webdept/svn/passwd user2       //之后不能用-c,否则会覆盖 New password: Re-type new password: Adding password for user user2 [root@localhost ~]# htpasswd /webdept/svn/passwd user3 New password: Re-type new password: Adding password for user user3 [root@localhost ~]# cat /webdept/svn/passwd user1:$apr1$rHOgr4Lq$x5nvEOB.E2k0HVajJcS9o1 user2:$apr1$gSr.NbdB$nUt8uXM6RpCeBntI0lMfD0 user3:$apr1$TA1A9HXo$JFQ2E2pBT5Y.vqE74iA8C0

    4、创建权限authz文件

    [root@localhost ~]# vim /webdept/svn/authz [groups] all = user1,user2 [/]       //“/”表示所有仓库的根目录下 #user1 = rw [www.backup01.com:/]       //第一个仓库,user1和user2可以读写 @all = rw [www.backup02.com:/]       //第二个仓库目录,user2和user3可以读写 User2 = rw User3 = rw

    5、启动服务测试

    [root@localhost ~]# systemctl restart httpd

    Processed: 0.018, SQL: 12