linux-centos搭建svn版本钩子自动更新版本库

时间:2022-07-25 10:06:58

一个公司的项目合作人员越多,对版本控制就非常的重要,在更改中难免会起冲突,而且有覆盖错误的情况,所以,单间svn控制版本,可以方便大家进行按照的还原,

为了管理的流程化、规范话,搭建svn版本控制器。


说明:项目软件:/usr/local/nginx/html/rabbit    创库版本地址:/usr/local/nginx/svndatehouse/rabbit

--------------------------------安装开始----------------------------

基本步骤:

1:安装subversion

2:创建版本库

3:配置用户和权限

4:钩子配置

5:svn的常用命令


一:安装subversion

          使用yum安装subversion

          [root@localhost ~]# yum -y install subversion

二:创建版本库

          [root@localhost ~] cd /usr/local/nginx/

          [root@localhost nginx] mkdir -p svndatehouse/rabbit

          [root@localhost nginx] svnadmin create svndatehouse/rabbit

三:版本库的配置

        进入svndatehouse/cms版本库目录中的conf目录,可以看到以下三个文件

         [root@localhost nginx] cd svndatehouse/rabbit/conf
         [root@localhost conf] ls

            authz       passwd     svnserve.conf

            说明:svnserve.conf  #这是一个版本库的配置文件

                        authz                 #这是一个记录组、权限、身份验证的文件

                        passwd            #这是一个记录用户账户密码的文件

         1:配置svnserve.conf文件,把下面的几项签名去掉,顶头写,前面不能有空格

          [root@localhost conf] vi svnserve.conf     

                      anon-access = none
                      auth-access = write
                      password-db = passwd
                      authz-db = authz

         2:配置passwd文件

         [root@localhost conf] vi passwd

                    [user]

                    # harry = harryssecret
                    # sally = sallyssecret

                    rabbit=lmt818   #配置rabbit版本库的     用户名=密码

         3:配置authz文件

        [root@localhost conf] vi authz
           说明:在最后面一行加上以下的字段;顶头写,前面不能有空格

               [/]            #配置访问相对根目录

               system=rw

      总结:svn版本库配置完成,之后相关钩子的配置以及启动、自动开机设置

         启动svn:       
         [root@localhost ~] svnserve -d -r /usr/local/nginx/svndatehouse/

         停止svn:

         [root@localhost ~] killall svnserve    或者    kill -9   进程号      

         设置开机启动:

         [root@localhost ~]  vi /etc/rc.d/rc.local

                  /usr/bin/svnserve -d -r /usr/local/nginx/svndatehouse/      

         我们通过客户端上传的文件提交到版本库中,我从本地提交的时候就能直接把文件提交到项目中去,需要用到钩子文件

四:钩子自动更新

        首先对代码目录进行checkout处理

         [root@localhost ~] cd /usr/local/nginx/html/

         [root@localhost html] svn co svn://192.168.3.110/rabbit/

                 Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
                 Password for 'root':
                 Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
                 Username: rabbit
                 Password for 'rabbit': lmt818
                 Checked out revision 0.
            通过密码的验证,配置钩子文件

          [root@localhost ~] cd /usr/local/nginx/svndatehouse/rabbit/hooks/     
          [root@localhost hooks]cp post-commit.tml post-commit

          [root@localhost hooks] vi post-commit

                  #在文件中填入以下字段

                    #!/bin/sh

                     export LANG=zh_CN.utf-8

                     REPOS="$1"                      REV="$2"

                    SVN=/usr/bin/svn

                    WEB=/usr/local/nginx/html/rabbit/

                    LOG=/data/home/auto_svn.log      # 存放日志,请自行新建文件夹目录

                    $SVN update $WEB --username rabbit --password lmt818 --non-interactive       #$SVN update $WEB --username 用户名 --password 密码 --non-interactive      
                    #....................................

                    if[$?==0]

                    then                   
                         echo  "$REPOS" "$REV" >> $LOG

                         echo `date` >> $LOG                          echo "##############################" >> $LOG                     fi            [root@localhost hooks] chmod 777 post-commit

            把目录文件和版本库惊醒关联,使项目目录的文件在版本库中留下链接

            [root@localhost hooks] svn   import  -m "rabbit" /usr/local/nginx/html/rabbit/  file:///usr/local/nginx/svndatehouse/rabbit                  
            [root@localhost hooks] cd /usr/local/nginx/

            [root@localhost nginx]   svn list file:///usr/local/nginx/svndatehouse/rabbit   #列出版本库文件                
           

           说明:1:客户端链接地址: svn://192.168.3.110/rabbit

                        2:链接客户端以后,必须将项目目录下的所有文件,在进行关联操作,这样提交的时候,才能将所有的文件及时的更新至相应项目中 ,关联之后,如果文件无法更新请删除相应目录下的文件,在进行commit操作                
                  

五:svn常用命令

            1:备份

                 [root@localhost htdocs]# svnadmin dump /www/svndata/systeacher /mnt/systeacher.2012.06.02

            2:关闭服务器

                  killall svnserve   或者 kill -9 id          
            3:查看服务   端口号为:3690

                 ps aux | grep svnserve  或者   ps -ef|grep svn

            4:查看版本库ID

                   svnlook uuid /www/svndatehosuse/system/

            5:提示版本库ID与期望不匹配  可以修改

                  svnadmin setuuid www/svndatehosuse/system  要修改的ID

            6:查看端口号

                  netstat -tunl 或 netstat -antopl | grep svn

            7:获取仓库地址

                   svn checkout file:///www/svndata/systeacher/ /opt/lampp/htdocs

            8:添加文件至svn服务器

                   svn add 1.php

             9:查看服务器状态

                   svn status

            10:提交数据

                    svn commit -m "this is test"

             11:更新项目

                    svn update

             12:返回指定的版本

                     svn update -r 2

             13:显示所有文件

                    svn list

             14:删除文件

                    svn delete 1.php

                    svn update


         svn checkout svn://192.168.3.29/system system/