• linux上搭建svn多仓库环境


    一、前言

    有条件的还是建议用GIT,如果我带团队, 也一定会主推GIT

    以下是我认为svn无法取代git的优点

    • SVN的分支是对某个分支或者主干的拷贝,而GIT的分支是创建一个指针,创建分支和切换分支非常迅速
    • GIT更优越的工作流, 存在本地库的概念,我可以在本地建立自己的分支,形成自己的版本库,而SVN必须有服务器才能工作

    二、环境搭建

    2.1 环境

    • ubuntu 18.04 腾讯云服务器

    • svn 1.9.7 版本

    • XShell 7

    2.2 安装过程

    还是通过ubuntu的软件管理工具apt-get进行安装, 首先要更新一下

    apt-get update
    
    • 1

    安装

    apt-get install subversion
    
    • 1

    通过 svn --version 验证svn是否安装成功, 能显示版本号就是安装成功

    svn --version
    
    • 1

    三、创建SVN库

    3.1 创建svn仓库

    我习惯放在home路径下, 看个人习惯

    mkdir /home/svn/repositories
    
    • 1

    因为有多个项目, 因此先创建他们的根目录, 并分配读写权限

    chmod -R 777 /home/svn/repositories
    
    • 1

    3.2 创建多项目

    因为大部分公司不可能只有一个项目, 因此这里建立多项目

    然后再在repositories下建立第一个项目的仓储

    svnadmin create /home/svn/projects/project1
    
    • 1

    查看一下文件信息

    ll /home/svn/projects/project1
    
    • 1

    可以查看到多了confdbformathookslocksREADME.txt

    然后类似我们建立第二个项目

    svnadmin create /home/svn/projects/project2
    
    • 1

    3.3 统一管理多项目

    为了控制两个项目的权限, 我们将账户密码和授权文件放到项目根目录下

    两个方式, 第一种方式通过ftp将project1或者project2下conf文件夹中的authz和passwd放到两个项目的根目录中, 也就是/home/svn/projects

    也可以通过cp命令一次将两个文件移动到根目录下

    cp /home/svn/projects/project1/conf/authz /home/svn/projects/project1/conf/passwd /home/svn/projects
    
    • 1

    然后分别修改两个项目中/conf/svnserve.conf文件

    ## 未登录不可以访问
    anon-access = none
    ## 授权后可以读写
    auth-access = write
    ## 指定验证文件路径
    password-db = /home/svn/projects/passwd
    authz-db = /home/svn/projects/authz
    ## 说实话我不知道这个有没有必要改, 改的话对应项目名称即可
    realm = project1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这样两个项目都依赖父文件夹的authzpasswd了, 方便统一授权和管理

    3.4 管理账户密码以及授权

    分配账号

    vim /home/svn/projects/passwd
    
    • 1

    分配所有人的账号

    suhao = 123456
    
    • 1

    管理授权

    vim /home/svn/projects/authz
    
    • 1

    没管理过svn, 个人感觉可以通过这种方式进行权限控制, 大佬勿喷

    [groups]
    [project1:/]
    # suhao分配读写权限
    # 或者* = rw也可以, 给所有人读写权限
    suhao = rw
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.5 云服务器其他配置

    配置防火墙

    sudo ufw enable ## 启动防火墙
    
    • 1
    sudo ufw allow 3690 ## 开放svn默认的3690端口
    
    • 1

    配置云服务器出入规则(云防火墙)

    访问控制台, 加入3690端口(TCP)限制即可

    四、测试启动和检出

    启动服务

    svnserve -d -r /home/svn/project
    
    • 1

    检出, 客户端通过

    svn://ip/project ## 检出project1
    
    • 1

    这里通过suhao账号可以正常检出, 也可以正常提交

    至此, svn配置结束

    五、初步理解

    以下部分是我作为初学者的一点理解

    svn启动命令是这样的

    svnserve -d -r /home/svn/repositories --listen-port 3690
    
    • 1

    有点类似http的静态服务, 我搭建一个静态服务器, 指定服务器本地路径, 就可以为这些路径下的文件提供http服务

    svn是不是也是这样的呢?

    希望明白的大佬指点一下~

  • 相关阅读:
    JVM篇---第六篇
    解决警告:the >>> and /deep/ combinators have been deprecated. Use :deep() instead.
    Potplayer通过公网访问群晖WebDav,快速搭建远程办公环境
    微前端四:qiankun在开发中遇到的问题
    Linux基础命令学习笔记
    你应该知道的 7 个很棒的 Java 项目
    MMU如何通过虚拟地址找到物理地址?
    软件项目管理【UML-类图】
    AXURE RP EXTENSION For Chrome 安装
    Android 12系统源码_SystemUI(一)SystemUI的启动流程
  • 原文地址:https://blog.csdn.net/rambler_designer/article/details/125917055