当前位置: 首页 > 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 是一个正整数。 输入描述 输入共一…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...