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

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.confsvn服务器配置文件

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 个性化旅游管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用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高并发缓存架构

前言&#xff1a; 针对缓存我们并不陌生&#xff0c;而今天所讲的是使用redis作为缓存工具进行缓存数据。redis缓存是将数据保存在内存中的&#xff0c;而内存的珍贵性是不可否认的。所以在缓存之前&#xff0c;我们需要明确缓存的对象&#xff0c;是否有必要缓存&#xff0c;怎…...

谨防利用Redis未授权访问漏洞入侵服务器

说明&#xff1a; Redis是一个开源的&#xff0c;由C语言编写的高性能NoSQL数据库&#xff0c;因其高性能、可扩展、兼容性强&#xff0c;被各大小互联网公司或个人作为内存型存储组件使用。 但是其中有小部分公司或个人开发者&#xff0c;为了方便调试或忽略了安全风险&#…...

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref&#xff08;&#xff09; v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…...

使用 JavaScript 进行 API 测试的综合教程

说明 API 测试是软件测试的一种形式&#xff0c;涉及直接测试 API 并作为集成测试的一部分&#xff0c;以确定它们是否满足功能、可靠性、性能和安全性的预期。 先决条件&#xff1a; JavaScript 基础知识。Node.js 安装在您的计算机上。如果没有&#xff0c;请在此处下载。npm…...

Vue 2.0源码分析-Virtual DOM

Virtual DOM 这个概念相信大部分人都不会陌生&#xff0c;它产生的前提是浏览器中的 DOM 是很“昂贵"的&#xff0c;为了更直观的感受&#xff0c;我们可以简单的把一个简单的 div 元素的属性都打印出来&#xff0c;如图所示&#xff1a; 可以看到&#xff0c;真正的 DOM …...

(HAL库版)freeRTOS移植STMF103

正点原子关于freeRTOS的教程是比较好的&#xff0c;可惜移植的是标准库&#xff0c;但是我学的是Hal库&#xff0c;因为开发速度更快&#xff0c;从最后那个修改SYSTEM文件夹的地方开始替换为下面的内容就可以了 5.修改Systick中断、SVC中断、PendSV中断 将SVC中断、P…...

vue2-axios

下载axios 开发版本&#xff1a;axios.js 生产版本&#xff1a;axios.min.js 搭建服务器&#xff1a;json-server npm i -g json-serverjson-server --watch db.json&#xff08;启动服务并读取文件&#xff0c;db.json文件目录下启动&#xff09; json-server --watch db.j…...

创建maven的web项目

&#xff08;一&#xff09;创建maven的web项目 Step1、创建一个普通的maven项目 &#xff08;1&#xff09;新建一个empty project&#xff0c;命名为SSM2。 点击项目名&#xff0c;右键new&#xff0c;选择Module&#xff0c;左侧选择“Maven archetype”&#xff0c;可以给…...

使用uniapp开发系统懒加载图片效果

1、创建一个Vue组件 在uniapp项目中&#xff0c;我们可以创建一个独立的Vue组件来实现懒加载图片效果。打开uniapp项目&#xff0c;进入components文件夹&#xff0c;创建一个名为"LazeImage"的组件。 2、编写组件模板 在"LazeImage"组件中&#xff0c;…...

导入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&#xff08;MBG&#xff09;是MyBatis和iBATIS的代码生成器。可以生成简单CRUD操作的XML配置文件、Mapper文件(DAO接口)、实体类。实际开发中能够有效减少程序员的工作量&#xff0c;甚至不用程序员手动写sql。 它将为所有版本的MyBatis以及版本2.2.0之后的i…...

SkyWalking全景解析:从原理到实现的分布式追踪之旅

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 SkyWalking全景解析&#xff1a;从原理到实现的分布式追踪之旅 前言第一&#xff1a;SkyWalking简介第二&#xff1a;实现原理概览第三&#xff1a;主键与架构第四&#xff1…...

新手如何买卖可转债,可转债投资基础入门

一、教程描述 什么是可转债&#xff1f;可转债是可转换债券的二次简称&#xff0c;原始全称是可转换公司债券&#xff0c;这是一种可以在特定时间、按特定条件&#xff0c;转换为普通股票的特殊企业债券&#xff0c;可转换债券兼具债权和股权的特征&#xff0c;其英文为conver…...

研习代码 day39 | 动态规划——完全背包的应用

一、爬楼梯&#xff08;进阶版&#xff09; 1.1 题目 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述 输入共一…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...