linux下svn服务器搭建及使用(包含图解)

2023-11-11

  今天自己动手在linux搭建了svn服务器,把具体过程和一些自己的见解分享给大家,希望对大家有所帮助。
  客户端svn(大家见到的小乌龟)下载地址为:http://tortoisesvn.net/downloads.html。这里客户端的安装就不作详解了,接下来直接进入服务端的安装~

  • 1)安装svn服务器
# yum install subversion

这里写图片描述

  • 2)创建一个目录用来存放所有的svn版本库(后期客户端更新时,有优势,后面会提到)
# mkdir /svn

这里写图片描述

  • 3)在svn目录下创建一个版本库 repositoryA
# svnadmin create /svn/repositoryA

这里写图片描述

  • 4)查看并分析生成的文件
# ls /svn/repositoryA

这里写图片描述

conf目录:版本库的配置文件,包含用户访问账号、权限等
db目录:存放数据
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号(可以用vi打开看一下)
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
README.txt文件:说明文档
  • 5)修改svnserve.conf 配置文件
# vi /svn/repositoryA/conf/svnserve.conf

这里写图片描述
这里写图片描述

打开并修改下面几个注释(或者直接添加,原来的注释就不用打开)
[general]  # 如果是直接添加到最后面,不要忘记加这条,否则客户端更新的时候会不用权限直接检出,提交时又报没权限
anon-access = none # 匿名不可读写,可以为write,read,none,默认为read,建议为none
auth-access = write # 验证用户可读写
password-db = /svn/repositoryA/conf/passwd # 指向用户名和密码的数据文件,地址不要写错,不然会报authorization failed
authz-db = /svn/repositoryA/conf/authz # 指向用户的权限配置文件,地址不要写错,不然会报authorization failed
realm = repositoryA         #客户端检出时,提示信息
保存退出:wq(我是linux小白,进入编辑后不会退出。。。 按Esc后,输入 : ,再输入wq即可)
  • 6)添加访问用户及密码
# vi /svn/repositoryA/conf/passwd

这里写图片描述
这里写图片描述

testUser1 = 123456 # 前面是用户名,后面是密码
testUser2 = 123456 # 这里建两个用户,为了说明配置权限时,可以分组管理
保存退出: wq
  • 7)管理用户权限
# vi /svn/repositoryA/conf/authz

这里写图片描述
这里写图片描述

[groups]
admin = testUser1,testUser2    # 可以通过一个变量管理多个权限一样的用户,用户之简用逗号“,”隔开
[/]                # 这里 / 表示对根目录(即/svn/ProjectA目录)下的所有子目录范围设置权限;
@admin = rw                 # rw表示可读写, r表示只读 
* =                         # 这一行很重要,表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,


如果有多个groups,要先把用户分组变量全部赋值,比如
admin = testUser1
art = testUser2
后面再分组给权限
[/]
@admin = rw
[/]
@art = rw

而不能将用户分组变量分开写
admin = testUser1
[/]
@admin = rw

art = testUser2
@art = rw

这样检出的时候会提示配置错误
  • 8)开启svn服务
    到这里,我们已经完成了svn服务端软件的下载,创建了版本库,并添加了用户以及相应的权限,最后我们只要开启svn服务即可。
    这这里我们要考虑后期添加新的版本库问题,这里提供两种方法开启svn服务。

第一种: 直接开启对应的版本库,一个端口指向一个版本库(默认svn对应的端口为3690)

#svnserve -d -r /svn/repositoryA  

这里写图片描述

这时重复2-7步,再添加一个版本库repositoryB。这里用

#svnserve -d -r /svn/repositoryB 

  开启版本库repositoryB时,会提示svnserve: Can’t bind server socket: Address already in use
因为svn默认使用的端口是3690,而之前在开启版本库repositoryA已经使用,所以这里提示已经使用
所以我们应该换个端口,这里假设端口3691未被使用,则可以使用

#svnserve -d -r /svn/repositoryB --listen-port 3691

注意: 这时客户端检出时,只要指定端口,就能检出对应的版本库,因为
svn://192.168.100.50:3690 对应 服务端的 /svn/repositoryA目录
svn://192.168.100.50:3691 对应 服务端的 /svn/repositoryB目录
(这里192.168.100.50是服务端的ip,你们根据自己服务器信息填写ip)

这里写图片描述

第二种: 开启版本库所在的目录(建议使用这种)

#svnserve -d -r /svn/

这时在客户端检出的时候,不用关心端口(默认3690),只要加入对应的版本库名就可以了,因为
svn://192.168.100.50:3690 对应 服务端的 /svn目录

svn://xxx.xxx.xxx.xxx/repositoryA
svn://xxx.xxx.xxx.xxx/repositoryB

补充:这里每个版本库都用自己的配置,每增加一个版本库就要重新配置一份,显然不够便捷,下次补充如何让多个版本库共用一份配置

svn 相关命令补充 :

  • 查看svn程序监听的所有端口以及PID信息:
netstat -anp |grep svn
  • 查看svn进程信息:
ps -ef|grep svnserve
  • 杀死svn进程:(根据上面查看svn进程信息,根据进程ID杀死指定进程)
kill -9 PID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下svn服务器搭建及使用(包含图解) 的相关文章

  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何

随机推荐

  • 二进制之补码与小数

    牛逼的二进制 1 前言 计算机使用二进制来表示所有形式的数据 颜色 文字 图像等 当前辈们想方设法要造一台计算机时都会遇到一个问题 怎么用电来表示数 显然他们发现开关的开和关正好对应二进制的0和1 然后计算机就使用二进制直到如今 那计算机怎
  • php实例——用户注册与登录

    这周做了个php的简单实例 算是学了这么久php语法的一次综合应用吧 感觉前面学的东西都不知道怎么用 不看教程还真做不出来 本来想把它写在网页弹出层上的 这样看起来更像是一个用户登录框 但是看了弹出层的代码后发现太麻烦了 所有的登录框代码都
  • Ubuntu安装Nvidia Container Toolkit

    文章目录 前言 一 基本概念 二 操作步骤 1 添加源 2 安装重启 总结 前言 NVIDIA Container Toolkit 可用于各种 Linux 发行版并支持不同的容器引擎 在开始之前 请确保您已经为您的 Linux 发行版安装了
  • 【微信小程序】 tabs切换时自动定位到点击的元素

    重点是设置 scroll into view 值为点击时元素的ID id不能以数字开头
  • 使用 MVC 架构构建 Flask CRUD 应用程序

    转自 Felipe Silveira 的 Build a Flask CRUD Application with MVC Architecture 翻译 如何用 Flask 的 Blueprint 实现一个 CRUD 的应用 我多年来一直在
  • 项目前端技术总结

    设计目标 在前端的设计阶段引入prototype prototype用于允许用户评估开发人员提案 并在实施之前尝试它们 它还有助于了解用户特定的要求 并且可能在开发商在产品设计期间可能没有考虑到这些要求 在数据处理之前需要用户填写表单或浏览
  • C#中的三种参数传递

    在 C 中 有三种向方法传递参数的方式 1 值参数 调用方法时 会为每个值参数创建一个新的存储位置 复制参数的实际值给函数的形参 按值传递 传递实参变量存储的内容 作用 传递信息 2 引用参数 引用参数是一个对变量的内存位置的引用 复制参数
  • 自己制作npy数据集,数据格式类似于mnist数据(16)---《深度学习》

    代码 import tensorflow as tf import numpy as np import os from PIL import Image dir home jobs Pictures test def getFileArr
  • GPT和GPT2

    https blog csdn net weixin 48185819 article details 106533850 https zhuanlan zhihu com p 174782647 https wmathor com ind
  • Flutter 隐藏组件的多种方法

    链接 https blog csdn net haha223545 article details 102796137
  • VUE 本地和内网(远程)访问配置

    本机电脑由于开启Hyper V 所以默认得到的内网是虚拟网卡的IP 所以需要特殊的方法来得到内网IP 一 package json 原代码 scripts dev webpack dev server inline progress con
  • java用Swing编写简单计算器

    先写个用来处理计算的类Calculate import java util public class Calculate public static Stack
  • 二叉堆

    二叉堆 在学习二叉堆之前 我们得理解堆是什么 定义 堆通常可以看作成一个树 它有任意节点的值都不大于 不小于 其子节点的值 二叉堆的意思就是 它有两个子节点 可分为最大堆和最小堆 最大堆 父节点的值总是大于或等于任何一个子节点的值 最小堆
  • Fourth season fifteenth episode,is Ross man enough to play rugby?

    Scene A beauty parlour Rachel is getting a manicure while Chandler yes Chandler is getting a petticure Does that scare y
  • org.springframework.beans.factory.BeanCreationExce

    org springframework beans factory BeanCreationException Error creating bean with name u Injection of resource methods fa
  • 代码审查总结

    近期所带项目 由于人员素养良莠不齐 写出的代码质量不一 为了保证项目质量 不得不正确代码一行行进行审查 同一时候 为了对代码审查有个更深的了解及借鉴其他同行实践成果 在网上搜集了不少项目知识 以下是对这些知识做出的整理 第1章前提 在 Wi
  • urllib库的使用

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 urll
  • caffe源码学习中--src/caffe/solver.cpp

    include caffe solver factory hpp中的solverRegistry类和SolverRegisterer 类 brief A solver factory that allows one to register
  • Unity屏幕坐标(Input.mousePosition)转换UI坐标

    Unity屏幕坐标 Input mousePosition 转换UI坐标 1 屏幕坐标的起点位置 左下角为 0 0 点 右上角为 Screen width Screen height 2 UI坐标的起点位置 屏幕中心点 方法一 Vector
  • linux下svn服务器搭建及使用(包含图解)

    今天自己动手在linux搭建了svn服务器 把具体过程和一些自己的见解分享给大家 希望对大家有所帮助 客户端svn 大家见到的小乌龟 下载地址为 http tortoisesvn net downloads html 这里客户端的安装就不作