图集1/15

正文 5104字数 1,341,555阅读


SVN代码库创建

检查是否已安装
rpm -qa subversion
Run code
Cut to clipboard


    安装SVN服务器
    yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql
    Run code
    Cut to clipboard


      验证安装
      # cd /etc/httpd/modules # ls | grep svn mod_authz_svn.so mod_dav_svn.so
      Run code
      Cut to clipboard


        查看版本
        svnserve --version
        Run code
        Cut to clipboard


          代码库创建
          安装完成后要建立SVN库
          mkdir -p /opt/svn/repositories svnadmin create /opt/svn/repositories
          Run code
          Cut to clipboard

            执行后,自动建立repositories库,查看/opt/svn/repositories文件夹包含了conf,db,format,hooks,locks,README.txt等文件,说明一个SVN库已经建立。

            配置版本库
            进入上面conf文件夹下,进行配置

            用户密码passwd配置
            vi + passwd //+表示光标放在文件最低端
            Run code
            Cut to clipboard


              修改passwd为一下内容
              [users]harry = harryssecret sally = sallyssecret zhoulf=123456
              Run code
              Cut to clipboard


                权限控制authz配置
                vi + authz
                Run code
                Cut to clipboard

                  设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
                  [/] zhoulf=rw //给该用户访问所有库的权限 或 [repositories:/project] //repository库的根目录权限 zhoulf=rw / 表示根目录及以下,根目录是svnserve启动时指定的,我们指定的是/opt/svn;/ 就是指对全部版本库都具有权限
                  Run code
                  Cut to clipboard

                    repositories:/ 表示对库repositories的根目录设置权限

                    PS:
                    * 权限配置文件中出现的用户名必须已在用户配置文件中定义。
                    * 对权限配置文件的修改立即生效,不必重启svn。

                    服务svnserve.con配置
                    vi + svnserve.conf
                    Run code
                    Cut to clipboard

                      添加一下内容:
                      [general] #匿名访问的权限,可以是read,write,none,默认为read anon-access=none #使授权用户有写权限 auth-access=write #密码数据库的路径 password-db=passwd #访问控制文件 authz-db=authz #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字 realm=/opt/svn/repositories
                      Run code
                      Cut to clipboard

                        这里注意各标签不能错,也不能有重复,不然无法连接。

                        配置防火墙端口(如果需要):
                        不一定每个人都需要设置,可以先测试后再看是否需要打开端口
                        vi /etc/sysconfig/iptables
                        Run code
                        Cut to clipboard

                          添加一下内容:
                          -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
                          Run code
                          Cut to clipboard

                            保存后重启防火墙
                            service iptables restart
                            Run code
                            Cut to clipboard


                              查看:
                              a. 启动SVN
                              svnserve -d -r /opt/svn/repositories
                              Run code
                              Cut to clipboard


                                b. 查看SVN进程
                                ps -ef|grep svn|grep -v grep
                                Run code
                                Cut to clipboard

                                  root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories

                                  c. 检测SVN端口
                                  netstat -ln |grep 3690
                                  Run code
                                  Cut to clipboard

                                    tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN

                                    停止重启SVN:
                                    killall svnserve //停止 svnserve -d -r /opt/svn/repositories // 启动
                                    Run code
                                    Cut to clipboard



                                      测试连接:
                                      (1) 在本地电脑上安装TortoiseSVN客户端:
                                      成功安装TortoiseSVN后在电脑桌面右键有TortoiseSVN提示;选择Repo-browser;会出现一个地址栏;

                                      (2)在地址栏输入:svn://+服务器IP地址;如果安装没问题的话就会进入服务器的资源库

                                      Linux服务器端设置svn开机启动

                                      (1)在Linux服务器跟目录((/root路径下))创建一个脚本文件
                                      touch svn.sh
                                      Run code
                                      Cut to clipboard


                                        (2)进入脚本文件
                                        vim svn.sh
                                        Run code
                                        Cut to clipboard


                                          (3)添加一下内容
                                          #!/bin/bash /usr/bin/svnserve -d -r /opt/svn/repositories
                                          Run code
                                          Cut to clipboard


                                            解释一下:

                                            这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。

                                            绝对路径怎么查?
                                            which svnserve
                                            Run code
                                            Cut to clipboard

                                              (4)改该脚本的执行权限
                                              chmod 777 svn.sh
                                              Run code
                                              Cut to clipboard

                                                (5)加入自动运行
                                                vi /etc/rc.d/rc.local
                                                Run code
                                                Cut to clipboard

                                                  在末尾添加脚本的路径:
                                                  /root/svn.sh
                                                  Run code
                                                  Cut to clipboard

                                                    (6)重启Linux服务器,重启后查看svn服务器是否已经开启
                                                    ps -ef|grep svnserve
                                                    Run code
                                                    Cut to clipboard

                                                      如果显示以下信息表示svn已经开启了:
                                                      tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN


                                                      配置多个仓库
                                                      linux服务器上配置多个svn仓库

                                                      1、在指定目录建立仓库保存总目录,本文示例目录设定为:/usr/local/svn/svnrepos

                                                      # mkdir -p /usr/local/svn/svnrepos

                                                      2、在总目录中创建两个仓库的文件夹,以及使用命令创建版本库
                                                      # mkdir -p /usr/local/svn/svnrepos/warehouse1 # mkdir -p /usr/local/svn/svnrepos/warehouse2 # svnadmin create /usr/local/svn/svnrepos/warehouse1 # svnadmin create /usr/local/svn/svnrepos/warehouse2
                                                      Run code
                                                      Cut to clipboard

                                                        3、进入warehouse1 目录下的conf文件夹。将其中的authz与passwd文件复制到svnrepos目录下
                                                        # cd /usr/local/svn/svnrepos/warehouse1/conf # cp authz ../../ # cp passwd ../../
                                                        Run code
                                                        Cut to clipboard

                                                          4、修改warehouse1/conf下的svnserve.conf文件,将其中的passwd文件制定与authz文件制定进行修改,其他配置按正常单svn配置。(warehouse2同样设置一遍)

                                                          5、修改复制出来的/svnrepos目录下的passwd文件与authz文件
                                                          passwd文件:设置账号密码

                                                          authz文件

                                                          6、启动svn服务
                                                          svnserve -d -r /usr/local/svn/svnrepos (这里目录配到总目录,不是仓库目录)
                                                          Run code
                                                          Cut to clipboard

                                                            7、其他
                                                            在windows环境检出项目的时候,
                                                            仓库1的检出地址为:svn://ip地址/warehouse1
                                                            仓库2的检出地址为:svn://ip地址/warehouse2

                                                            linux开启多个svn

                                                            一.建立svn库
                                                            mkdir /opt/svndata/one svnadmin create /opt/svndata/one
                                                            Run code
                                                            Cut to clipboard

                                                              注:这里我将svn库都放在opt在的svndata文件夹下,这里我建立了一个

                                                              二.上传项目到指定svn
                                                              svn import D:\eclipse\Test svn:/ /192.168.1.105:3690/TestProject -m "TestProject"
                                                              Run code
                                                              Cut to clipboard


                                                                三.同时自动开启多个svn
                                                                1.创建执行脚本svn.sh(/root路径下),其内容很简单。如下:
                                                                #!/bin/bash svnserve -d --listen-port 3690 -r /opt/svndata/one svnserve -d --listen-port 3691 -r /opt/svndata/two
                                                                Run code
                                                                Cut to clipboard

                                                                  2.添加可执行权限
                                                                  chmod ug+x /root/svn.sh
                                                                  Run code
                                                                  Cut to clipboard

                                                                    3.添加自动运行
                                                                    打开(vi或gedit) /etc/rc.d/rc.local,在最后一行添加如下内容:
                                                                    /root/svn.sh
                                                                    Run code
                                                                    Cut to clipboard


                                                                      保存退出

                                                                      4.检查
                                                                      重启服务器,使用ps -ef 看看进程是否启动了

                                                                      提交自动同步更新
                                                                      Linux下svn文件提交后自动同步更新到网站目录

                                                                      假如现在有:

                                                                      SVN版本库中的一个项目:/home/svn/tcyg
                                                                      网站目录:/home/www/
                                                                      我们先将SVN版本库中的一个项目checkout到网站目录:
                                                                      svn co file:///home/svn/tcyg/ /home/www/
                                                                      Run code
                                                                      Cut to clipboard

                                                                        这时,网站目录已成为SVN的工作副本,接下来利用SVN的钩子让这个工作副本自动更新。

                                                                        新建一个post-commit钩子:(The post-commit hook is invoked after a commit.)
                                                                        vim /home/svn/tcyg/hooks/post-commit
                                                                        Run code
                                                                        Cut to clipboard

                                                                          添加以下代码:
                                                                          #!/bin/sh REPOS="$1" REV="$2" export LANG="zh_CN.UTF-8" #防止乱码 svn update /home/www/ --username Hwei --password 123456 --no-auth-cache #设置登陆账号密码并不缓存
                                                                          Run code
                                                                          Cut to clipboard

                                                                            注:不要遗漏第一行的#!/bin/sh,否则post-commit会报代号255的错误。
                                                                            保存后,修改文件权限为755,否则SVN无法调用执行:
                                                                            chmod 755 /home/svn/tcyg/hooks/post-commit OR: chmod +x /home/svn/tcyg/hooks/post-commit
                                                                            Run code
                                                                            Cut to clipboard

                                                                              OK,至此,就完成了svn文件提交后自动同步更新到网站目录的代码了