Linux-Ubuntu环境下搭建SVN服务器
Linux-Ubuntu环境下搭建SVN服务器
- 一、背景
- 二、前置工作
- 2.1确定IP地址保持不变
- 2.2关闭防火墙
- 三、安装SVN服务器
- 四、修改SVN服务器版本库目录
- 五、调整SVN配置
- 5.1查看需要修改的配置文件
- 5.2修改svnserve.conf文件
- 5.3修改passwd文件,添加账号和密码(windows中checkout时需要使用)
- 5.4修改authz文件
- 六、重启SVN服务
- 6.1重启
- 6.2查看SVN服务状态
- 6.3杀死SVN进程命令(慎用)
- 七、安装TortoiseSVN
- 八、访问SVN服务器
- 九、使用IDEA拉取SVN的代码
- 十、SVN项目的提交
- 感谢
一、背景
今天团队突然要求用SVN作为代码的同步工具,一时间很慌,入职的第一家公司是用的SVN,但是之前都是用Tortoise这款工具界面点选的,编译工具也是用的My Eclipse,现在一下切换了Idea工具和Git后,以前的知识忘掉了很多,自己搭建一个SVN服务器,更是想都没想过。不过越是有挑战的事情,我就更想尝试一下。那今天就试试吧。
二、前置工作
2.1确定IP地址保持不变
本次系统环境:Ubuntu20.04.6,因为公司用的Ubuntu,所以也是想尝试这个系统搭建。
首先确定IP,我不能让我的SVN服务器总是变地址,所以先做一下配置
cd /etc/netplan
然后
ls
如下:

然后修改这个文件,注意需要管理员权限,所以加上sudo
sudo vim 01-network-manager-all.yaml
修改内容如下:可以看到是yaml文件所以分号和空格都要对齐,很重要
# Let NetworkManager manage all devices on this system
network:ethernets:ens33:dhcp4: falseaddresses: [IP地址/24]gateway4: 网关地址nameservers:search: [mydomain , otherdomain]addresses: [网关地址,114.114.114.114]version: 2renderer: NetworkManager
这里如果不知道网关地址,可以这样查看
nmcli dev show
最后执行如下命令生效
sudo netplan apply
之后重启系统
systemctl reboot
再执行命令
nmcli dev show
发现网络信息已经更改了
2.2关闭防火墙
接着关闭防火墙,NetworkManager,selinux;
首先在终端中输入
sudo ufw status
查看当前防火墙状态

可以看到目前防火墙是关闭状态。
如果防火墙是开启状态,可以在终端输入
sudo ufw disable
来关闭防火墙。
三、安装SVN服务器
利用以下命令查看自己的系统是否已经安装了svn:
svn
界面如下,说明没有安装SVN

界面如下说明安装过了

根据提示完成SVN的安装
sudo apt-get install subversion
这里输入Y

注意,输入的命令要加-get否则会像我一样

如果像我这样的报错,可以输入以下命令
sudo apt-get update
代码解释:
- sudo:确保足够权限,以超级用户或管理员权限运行命令。
- apt-get:软件包管理工具,管理软件包更新、安装、升级、删除。
- update:通知apt-get 执行软件包列表更新操作。
下载完更新包界面如下:

再次执行
sudo apt-get install subversion
再输入Y即可

这样就是安装完毕了

安装完成之后
可以验证指令
svn help
如下:表示安装成功

如下命令可以查看svn的版本
svn --version

四、修改SVN服务器版本库目录
subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里。
因为/usr目录下用于存放普通用户的应用程序、库文件和文档,所以将SVN库存放在/usr下
创建版本库目录指令如下
cd usr

输入如下的指令:注意,这里需要sudo权限
sudo mkdir svn
可以看到svn目录创建出来了

进入到svn目录下中
cd /usr/svn

执行如下的指令:
其中heima-leadnews是我仓库的名称
sudo svnadmin create heima-leadnews
执行完之后,可以看到仓库下,初始化了一些文件

五、调整SVN配置
5.1查看需要修改的配置文件
进入conf目录,查看需要修改的配置文件
cd /usr/svn/heima-leadnews/conf
接着输入
ls
可以看到配置文件目录下,有这四个文件

| 文件名称 | 作用 |
|---|---|
| authz | 权限配置文件,控制读写权限 |
| passwd | 账号密码配置文件 |
| svnserve.conf | svn服务器配置文件 |
5.2修改svnserve.conf文件
执行命令
sudo vim svnserve.conf
执行后,打开了配置文件

我们只需要放开如下注释即可:
[general]
anon-access = read 【控制非鉴权用户访问版本库的权限】
auth-access = write 【控制鉴权用户访问版本库的权限】
password-db = passwd 【指定用户名口令文件名,即访问时要输用户名和密码】
authz-db = authz
realm = /MyBackup/svn/MyBackups 【指定版本库的认证域,即在登录时提示的认证域名称,改成自己的版本库】
具体如下

保存并退出
:wq
5.3修改passwd文件,添加账号和密码(windows中checkout时需要使用)
执行指令
sudo vim passwd

尾行加上账号和密码即可

保持并退出
:wq
5.4修改authz文件
执行指令
sudo vim authz

在根目录下设置用户读写权限(注意这里/根目录符号不要写反)

保持并退出
:wq
六、重启SVN服务
到此,配置已经全部完成,账号信息已经添加成功
更改svnserver.conf时需要重启SVN服务才生效,更改authz,passwd文件时则不需要重启服务。
6.1重启
重启命令如下:
sudo svnserve -d -r /usr/svn/

6.2查看SVN服务状态
查看SVN服务状态命令:
ps aux|grep svnserve

6.3杀死SVN进程命令(慎用)
sudo killall svnserve
至此,SVN服务器已配置完成
七、安装TortoiseSVN
这里使用工具TortoiseSVN-1.14.5
下载地址:
TortoiseSVN-1.14.5.29465-x64-svn-1.14.2
汉化地址:
汉化包
安装,没啥说的,就是选择磁盘的时候,可以放到指定盘

剩下一直Next和Install即可,最后问你是否立即重启,选择Yes会立即重启,选择No会稍后手动重启

紧接着安装中文包,直接点击下一步即可,勾选这里

单击鼠标右键,可以看到TortoiseSVN已经安装完毕

八、访问SVN服务器
直接选择本地的一个文件夹作为本地库,右键检出,输入地址

输入地址

结果发现报错了

原因很简单,因为重启后,虚拟机需要重新启动svn服务,执行指令
sudo svnserve -d -r /usr/svn/
那我这边重启后,用TortoiseSVN也报错了,原因是svnserve.conf文件第18行错误

看了一下,去掉注释的时候,没有去掉前面的空格

然后需要重启一下svn
查看进程PID
sudo netstat -ntpl
杀死相应的PID
sudo kill -9 2244

再重启SVN
sudo svnserve -d -r /usr/svn/
这时候让输入用户名和密码,就说明成功了

可以直接把本地的文件拖过去

九、使用IDEA拉取SVN的代码
新建项目的时候选择Get from Version Control

选择版本控制工具是svn

我这里显示了这个错误

原因是没有安装Command命令

所以需要重新安装TortoiseSVN

勾选Will be installed on local hard drive即可

点击刷新之后就可以使用了,这里选择的一定是src的上级目录

这里尽量选择第二,也就是有子目录的,方便后续管理

点击ok之后,就会对代码进行拉取了
十、SVN项目的提交
界面如下:

当我们对项目文件进行修改后,我们需要提交我们的工作内容
此时项目文件名是蓝色的,需要提交至 SVN

右边是现在的代码,左边是以前的代码

点击Commit即可
现在发现,我查询本地历史报错了

报错如下:

简单,我只要设置读和写都需要校验用户名和密码即可
更改
/usr/svn/Datastructure/conf/svnserve.conf 文件中anon-access设为none。

配置完后整体重启

再尝试一下,就ok了

感谢
感谢博主Wyn_的文章:
参考链接如下:SVN搭建ubuntu服务器过程
相关文章:
Linux-Ubuntu环境下搭建SVN服务器
Linux-Ubuntu环境下搭建SVN服务器 一、背景二、前置工作2.1确定IP地址保持不变2.2关闭防火墙 三、安装SVN服务器四、修改SVN服务器版本库目录五、调整SVN配置5.1查看需要修改的配置文件5.2修改svnserve.conf文件5.3修改passwd文件,添加账号和密码(window…...
python tkinter使用(四)
本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白输入框 如下: name tk.Entry(window) name.pack()2: 设置输入框的默认文案 name tk.Entry(window) name.pack() name.insert(tk.END, "请…...
记录ruoyi-plus-vue部署的问题
ruoyi-vue-plus5.x 后端 ruoyi-vue-plus5.x 前端 前端本地启动命令 # 克隆项目 git clone https://gitee.com/JavaLionLi/plus-ui.git# 安装依赖 npm install --registryhttps://registry.npmmirror.com# 启动服务 npm run dev# 构建生产环境 yarn build:prod # 前端访问地址…...
如何在springboot项目中使用minio上传下载删除文件
引入maven依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency>申请 bucket | access_key | secret_key 项目中配置相关参数 mini…...
SSM个性化旅游管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
一、源码特点 SSM 个性化旅游管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库 ,系统主要采用B…...
4-Docker命令之docker version
1.docker version介绍 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [参数] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…...
Redis高并发缓存架构
前言: 针对缓存我们并不陌生,而今天所讲的是使用redis作为缓存工具进行缓存数据。redis缓存是将数据保存在内存中的,而内存的珍贵性是不可否认的。所以在缓存之前,我们需要明确缓存的对象,是否有必要缓存,怎…...
谨防利用Redis未授权访问漏洞入侵服务器
说明: Redis是一个开源的,由C语言编写的高性能NoSQL数据库,因其高性能、可扩展、兼容性强,被各大小互联网公司或个人作为内存型存储组件使用。 但是其中有小部分公司或个人开发者,为了方便调试或忽略了安全风险&#…...
关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、
el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref() v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…...
使用 JavaScript 进行 API 测试的综合教程
说明 API 测试是软件测试的一种形式,涉及直接测试 API 并作为集成测试的一部分,以确定它们是否满足功能、可靠性、性能和安全性的预期。 先决条件: JavaScript 基础知识。Node.js 安装在您的计算机上。如果没有,请在此处下载。npm…...
Vue 2.0源码分析-Virtual DOM
Virtual DOM 这个概念相信大部分人都不会陌生,它产生的前提是浏览器中的 DOM 是很“昂贵"的,为了更直观的感受,我们可以简单的把一个简单的 div 元素的属性都打印出来,如图所示: 可以看到,真正的 DOM …...
(HAL库版)freeRTOS移植STMF103
正点原子关于freeRTOS的教程是比较好的,可惜移植的是标准库,但是我学的是Hal库,因为开发速度更快,从最后那个修改SYSTEM文件夹的地方开始替换为下面的内容就可以了 5.修改Systick中断、SVC中断、PendSV中断 将SVC中断、P…...
vue2-axios
下载axios 开发版本:axios.js 生产版本:axios.min.js 搭建服务器:json-server npm i -g json-serverjson-server --watch db.json(启动服务并读取文件,db.json文件目录下启动) json-server --watch db.j…...
创建maven的web项目
(一)创建maven的web项目 Step1、创建一个普通的maven项目 (1)新建一个empty project,命名为SSM2。 点击项目名,右键new,选择Module,左侧选择“Maven archetype”,可以给…...
使用uniapp开发系统懒加载图片效果
1、创建一个Vue组件 在uniapp项目中,我们可以创建一个独立的Vue组件来实现懒加载图片效果。打开uniapp项目,进入components文件夹,创建一个名为"LazeImage"的组件。 2、编写组件模板 在"LazeImage"组件中,…...
导入PIL时报错
在导入PIL时,报以下错误: 查找原因 参考博客 Could not find a version that satisfies the requirement PIL (from versions: ) No matching distributi-CSDN博客,按照wheel后,安装PIL时,报如下的错误。 查找说是python版本与wheel文件版本不同,确认本机python版本 …...
MyBatis Generator 插件 详解自动生成代码
MyBatis Generator(MBG)是MyBatis和iBATIS的代码生成器。可以生成简单CRUD操作的XML配置文件、Mapper文件(DAO接口)、实体类。实际开发中能够有效减少程序员的工作量,甚至不用程序员手动写sql。 它将为所有版本的MyBatis以及版本2.2.0之后的i…...
SkyWalking全景解析:从原理到实现的分布式追踪之旅
🎏:你只管努力,剩下的交给时间 🏠 :小破站 SkyWalking全景解析:从原理到实现的分布式追踪之旅 前言第一:SkyWalking简介第二:实现原理概览第三:主键与架构第四࿱…...
新手如何买卖可转债,可转债投资基础入门
一、教程描述 什么是可转债?可转债是可转换债券的二次简称,原始全称是可转换公司债券,这是一种可以在特定时间、按特定条件,转换为普通股票的特殊企业债券,可转换债券兼具债权和股权的特征,其英文为conver…...
研习代码 day39 | 动态规划——完全背包的应用
一、爬楼梯(进阶版) 1.1 题目 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 输入描述 输入共一…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
