当前位置: 首页 > news >正文

linux环境下 安装svn并且创建svn版本库详细教程

一、安装SVN

  1. 通过yum安装Subversion
    在Linux系统中执行以下命令安装:
    yum install subversion -y
    安装完成后,验证版本:
    svnserve --version

二、创建版本库

  • 选择存储路径并创建目录
    通常将版本库放在/var/svn/usr/local/svn目录下:

    mkdir -p /var/svn/repo  # 创建版本库根目录
    cd /var/svn
  • 初始化版本库
    使用svnadmin create命令创建具体的版本库(例如project):

    svnadmin create /var/svn/project

    完成后,版本库目录下会生成conf(配置文件)、db(数据库)等子目录

    三、配置权限与用户

    进入版本库的conf目录(/var/svn/project/conf),修改以下文件:

  • ​**配置svnserve.conf**​
    编辑文件并取消注释以下内容

    [general]
    anon-access = none      # 禁止匿名访问
    auth-access = write     # 授权用户可写
    password-db = passwd    # 用户密码文件路径
    authz-db = authz        # 权限控制文件路径
    realm = /var/svn/project  # 认证空间名(版本库路径)
  • 设置用户密码(passwd文件)​
    [users]块中添加用户名和密码:

    [users]
    user1 = password1
    user2 = password2
  • 配置权限组(authz文件)​
    定义用户组及权限(例如开发组devs对根目录有读写权限)

    [groups]
    devs = user1, user2[/]
    @devs = rw
    * = r    # 其他用户只读

四、启动SVN服务

  1. 启动服务
    通过以下命令启动SVN服务:

    svnserve -d -r /var/svn  # -d表示后台运行,-r指定版本库根目录
  2. 设置开机自启
    编辑/etc/rc.local文件,添加启动命令:

    echo "svnserve -d -r /var/svn" >> /etc/rc.local
    chmod +x /etc/rc.local
  3. 防火墙配置
    开放SVN默认端口3690:

    firewall-cmd --permanent --add-port=3690/tcp
    firewall-cmd --reload

    或临时关闭防火墙:

    systemctl stop firewalld

五、自动化部署(可选)​

若需将SVN与LNMP的Web目录同步(例如自动更新代码到网站根目录):

  1. 配置post-commit钩子脚本
    在版本库的hooks目录中创建脚本:
    cd /var/svn/project/hooks
    cp post-commit.tmpl post-commit
    vi post-commit
    添加以下内容(假设Web目录为/home/wwwroot):
    #!/bin/sh
    export LANG=zh_CN.UTF-8
    SVN=/usr/bin/svn
    WEB=/home/wwwroot/project
    $SVN update $WEB --username user1 --password password1
    赋予执行权限:
    chmod 755 post-commit
  2. 在web目录/home/wwwroot同样检出版本库(第六步操作),否则会报错Skipped '/www/wwwroot/dist' svn: E155007: None of the targets are working copies

六、验证操作

  1. 本地检出测试
    使用客户端执行:

    svn checkout svn://服务器IP/project --username user1

    输入密码后,若成功检出则配置完成

  2. 提交代码测试
    在本地修改文件后提交

    svn commit -m "首次提交"

    若自动同步到Web目录,则检查文件是否更新

七、可能会出现以下报错 

     post-commit hook failed (exit code 127) with output:   或者  客户端提交不上去,从以下几个步骤去解决

1. 检查脚本命令路径
  • 确保所有命令使用绝对路径,例如:
    # 错误写法:svn update ...
    # 正确写法:/usr/bin/svn update ...
    /usr/bin/svn update /var/www/html --username user --password pass
2. 设置文件权限与用户
  • 赋予 post-commit 执行权限:
    chmod 755 /var/svn/project/hooks/post-commit
  • 修改目录所有权(根据 Web 服务器用户):如果是
    chown -R www:www /var/svn/project
    chown -R www:www /var/www/html
    若使用 Windows 环境(如 VisualSVN Server),需确保服务账户有权限执行钩子脚本。
3. 修复环境变量与编码
  • 在脚本开头添加环境变量声明:
    #!/bin/sh
    export LANG=en_US.UTF-8  # 或 zh_CN.UTF-8
    export PATH=/usr/bin:/usr/local/bin:$PATH
    避免因语言环境或 PATH 缺失导致的命令未找到问题。
4. 增强错误处理逻辑
  • 在关键命令后添加错误处理:
    /usr/bin/svn update /var/www/html || exit 1
    exit 0  # 确保脚本最终返回成功状态
    此方法可捕获 svn update 失败并正确退出。
5. 验证脚本独立运行
  • 手动执行钩子脚本以定位问题:
    cd /var/svn/project/hooks
    ./post-commit
    观察输出是否包含具体错误(如文件不存在或权限拒绝)

相关文章:

  • python中元组的操作
  • 149.WEB渗透测试-MySQL基础(四)
  • 三轴云台之智能分析与识别技术篇
  • 蒟蒻编程日志
  • 腾讯云代码助手CodeBuddy使用体验
  • 第八章 模板项目生成
  • Matrix-Game:键鼠实时控制、实时生成的游戏生成模型(论文代码详细解读)
  • SPL做量化---MTM(动量指数)
  • Linux!启动~
  • 大模型对比
  • Grafana分布统计:Heatmap面板
  • 计算机视觉----感兴趣区域(ROI)、非极大值抑制
  • 探究电阻分压的带负载能力
  • DeepEval:快速搭建 LLM 评估框架实战「喂饭教程」
  • 机器学习数据预处理回归预测中标准化和归一化
  • C语言单链表应用详解
  • 【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
  • 【目标检测】RT-DETR
  • PT2031K单触控单输出触摸IC
  • 【数据结构】线性表--栈
  • 江西4人拟任县(市、区)委书记,其中一人为“80后”
  • 韩正会见美国景顺集团董事会主席瓦格纳
  • 上海锦江乐园摩天轮正在拆除中,预计5月底6月初拆完
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会
  • 首个偏头痛急性治疗药物可缓解前期症状
  • 中巴续签双边本币互换协议,进一步深化金融战略合作