zoukankan      html  css  js  c++  java
  • aliyun ECS SVN server搭建

    在阿里云ECS上搭一个SVN服务器,方便文件版本控制     CentOS 7  64位   SVN 版本 1.7.14 (r1542130)

    我们没有必要了解Subversion的所有特性的方方面面,我们的目的是使用它来对我们的project进行方便的简单的版本管理,因此,强烈推荐阅读Subversion Quick-Start GuidBasic Usage

    首先通过软件包管理器添加 安装svn,也就是subversion. 用 rpm 或者 yum 都可以

    yum -y install subversion

    安装完成后在 shell窗口 输入 svn --version 如下显示就表示安装成功!

    安装成功之后,在/root/下会生成一个.subversion文件夹  也就是~/.subversion, 接下来

    [lesten@qu7hz ~]# cd /root/.subversion

    [lesten@qu7hz .subversion]# ls
    config README.txt servers

    # 创建svn 仓库文件夹repos 你可以创建在任意文件夹下 as you like
    [lesten@qu7hz .subversion] mkdir repos/myrepo

    # 建立svn 仓库

    [lesten@qu7hz .subversion]# svnadmin create repos/myrepo
    [lesten@qu7hz repos]# cd repos/myrepo
    [lesten@qu7hz myrepo]# ls
    [lesten@qu7hz myrepo]# conf db format hooks locks README.txt

    # 导入项目

    [lesten@qu7hz myrepo]# svn import ~/home/test/ file:///root/.subversion/repos/myrepo/ -m "init import"

    正在增加 /home/test/css
    正在增加 /home/test/css/default.css
    正在增加 /home/test/index.html

    提交后的版本为 1。
    导入成功

    当前我们已经对myrepo项目进行了初始化导入,此时原工程目录已经与myrepo脱离,这时候原目录删掉也没关系了

    这时候我们已经可以在其他目录中checkout这个工程出来
    svn co file:///root/.subversion/repos/myrepo /home/mytest


    接下来需要对权限进行配置  进入myrepo/conf文件夹 ls
    authz: 权限配置文件
    passwd: 用户名口令文件
    svnserve.conf svn服务配置文件

    我希望权限和配置文件共用 可以建立svnserve.conf模板 然后建立一个新的仓库以后拷贝到新仓库目录下就可以了
    这里
    mkdir comm_conf
    cp /root/.subversion/repos/myrepo/conf/*.* /root/.subversion/repos/comm_conf/

    拷贝全部文件 到comm_conf文件夹后 编辑 comm_conf 配置
    cd comm_conf
    vi server.conf

    anon-access = none #未验证不给予权限 不允许匿名访问
    auth-access = write #验证后允许写入
    password-db = /root/.subversion/repos/comm_conf/passwd #使用指定value值 文件数据为 用户名密码
    authz-db = /root/.subversion/repos/comm_conf/authz #使用指定value值 文件数据为 用户组权限

    创建svn组和组用户权限
    vi authz

    [group] #指定组下的用户 多个用逗号分隔
    g1=lesten,lesten1
    
    [/] #指定根目录下的权限 也可以指定特定目录下的权限
    @g1 = rw #指定组g1 用户具有读写权限 
    * = r #其他用户 对根目录只有读权限
    或者
    [repos:/project] //根目录权限
    lesten=rw

    设置用户名和密码

    vi passwd
    [users]
    lesten = ****** #指定用户名为lesten的密码为******

    改完以后 用cp命令拷贝到对应仓库目录下去
    cp server.conf ../myrepo/server.conf

    一定要注意
    (1)配置项前面不要留空格 不然可能有各种莫名其妙的错误 无法访问
    (2)在 authz文件中 指定组和指定目录 之间是有中括号分隔的 一定要注意
    我就是漏掉了 指定根目录权限的[/] 导致访问一直出现E170001: Unable to connect to a repository at URL 'svn:*****' 踩坑踩了两个小时
    对配置文件的填写一定要细心。
    (3)对 authz 和 passwd 文件的修改是不需要重新svnserve服务的,对server.conf的修改则需要重启svnserve服务

    全部填写完毕后

    可以试着启动svn服务了
    [lesten@qu7hz ~]# svnserve -dr /root/.subversion/repos/
    参数-d表示以守护进程运行,-r后面接服务的根目录,如果需要绑定别的端口,则在后面加上--listen-port 端口号。

    看看是否启动成功 pgrep svnserve 默认svn端口7690
    [lesten@qu7hz ~]# pgrep svnserve
    7599
    [lesten@qu7hz ~]#

    这个就是启动成功了 回显了进程pid 7599
    重启的时候就可以 kill 7599 或者 直接 killall svnserve
    然后重新 svnserve -dr 仓库目录

    这时候已经可以用
    [lesten@qu7hz ~]# svn co svn://localhost/myrepo --username lesten --password ****** 拉取工作副本了


    5.  但是 如果要远程拉取 还需要在ECS后台添加安全组规则

     

    配置防火墙端口(如果需要):

    不一定每个人都需要设置,可以先测试后再看是否需要打开端口

    # vi /etc/sysconfig/iptables

    添加一下内容:

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

    保存后重启防火墙

    # service iptables restart

    设置svn开机启动

    有关开机启动svn服务 参考: https://www.cnblogs.com/zengjiqiang/p/7413910.html

    (1)在Linux服务器跟目录((/root路径下))创建一个脚本文件

    #  touch svn.sh

    (2) 进入脚本文件

    # vim svn.sh

    (3)添加一下内容

    #!/bin/bash

    /usr/bin/svnserve -d -r  /opt/svn/repositories

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

    (4)修改改该脚本的执行权限

    # chmod 777 svn.sh
    (5)加入自动运行
    # vi /etc/rc.d/rc.local
    在末尾添加脚本的路径:
    /root/svn.sh
    (6)重启Linux服务器,重启后查看svn服务器是否已经开启
    #  ps -ef|grep svnserve
    如果显示以下信息表示svn已经开启了
    tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN
    SVN 常用命令
    svn help
    svn help commit  查看commit的帮助信息
    svn --version
    svn --version --quiet    只显示版本号
    svn checkout 地址
    svn add 文件或者文件夹    增加本地数据到服务器
    svn commit / svn ci -m “注释”  文件名   提交代码,要先add才commit
    svn update / svn up 不必跟特定的文件或目录,也可以自己指定需要更新的文件或目录。每次commit或者改动之前最好更新一下。
    svn log
    svn delete 文件名
    svn resolve 路径 --accept working    解决冲突
    svn switch 远程路径    版本切换
    svn list 路径 / svn ls    列出版本库下的文件和目录
    svn merge -r m:n 路径     合并文件,从版本号m到版本号n的远程分支都合并到当前分支中
    svn info 确认工作目录的svn信息
    svn diff -r m:n 路径    对版本m和版本n比较差异
    svn cleanup     为失败的失误清场
    svn status -v    在本地进行代码修改,检查修改状态
    svn import 远程路径 --message “message”   将当前路径下文件导入到版本库中
    svn export 远程路径    导出一份干净的项目
    svn move/ svn mv 原文件名 新文件名    重命名
    svn mkdir 文件名
    svn copy / svn cp 源文件路径 新文件路径
    svn revert 文件名     只能恢复未提交之前的操作
    若要还原已提交的改动:只能用旧文件覆盖新文件。操作如下:
        1)sun up    让本地工作拷贝更新到最新状态
        2)svn log your_file_path     查看文件日志,这时候提交时填写的说明信息就派上用场了
        3)svn diff -r 旧修订版序号:新修订版序号 your_file_path    查看两个修订版之间的不同。
        4)决定用哪个旧的修订版号后,用旧的修订版号文件覆盖新的修订版号文件。svn merge -r 新修订版序号:旧修订版序号 your_file_path
        5)svn commit -m "恢复到某修订版(某修订版作废)"
    本地的版本叫做working copy

    参考自: https://blog.csdn.net/yangxiao2shi/article/details/50719286/

    参考:   centos6.5 svn服务端搭建

             (有配置SVN服务器的HTTP支持 http配置centos6.5环境下svn服务器和客户端配置实用详解

    其他参考阿里云doc

    参考文档一、https://help.aliyun.com/knowledge_detail/37789.html  

    参考文档二、https://help.aliyun.com/document_detail/52864.html

  • 相关阅读:
    confd + Nacos | 无代码侵入的配置变更管理
    从0 开始手写一个 RPC 框架,轻松搞定!
    MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
    ASP.NET/C# Razor视图引擎深入浅出
    建立Web Service 接口及调用
    浅谈对Jquery+JSON+WebService的使用小结
    JSON--WEB SERVICE
    C#中对虚拟属性和抽象属性的重写有什么异同
    C# virtual 函数
    sql server2008用ip远程连接
  • 原文地址:https://www.cnblogs.com/lesten/p/9311360.html
Copyright © 2011-2022 走看看