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服务器过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VRRP的交换机VRRP主备配置例子

拓朴如下: 主要配置如下: [S1] vlan batch 10 20 # interface Vlanif10ip address 10.1.1.1 255.255.255.0vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface Vlanif20ip address 13.1.1…

89. 打家劫舍【动态规划】

题目 题解 class Solution:def rob(self, nums: List[int]) -> int:N len(nums)# 定义状态: dp[i]表示从第i间房子开始抢劫,最多能抢到的金额dp [0 for i in range(N)]for i in range(N-1, -1, -1):if i N-1:dp[i] nums[i]elif i N-2:dp[i] max(nums[i], …

Python是个什么鬼?朋友靠它拿了5个offer

闺蜜乐乐,外院科班出身,手持专八和CATTI证书,没想到找工作时却碰了钉子… 半夜12点,乐乐跟我开启了吐槽模式: 拿到offer的都是小公司的翻译活儿,只能糊个口。稍微好点的平台要求可就多了,不仅语…

apple macbook M系列芯片安装 openJDK17

文章目录 1. 查找openjdk版本2. 安装openjdk3. 多jdk之间的切换 在这里我们使用 brew 命令查找并安装。 1. 查找openjdk版本 执行:brew search openjdk,注意:执行命令后,如果得到的结果中没有红框内容,则需要更新一下…

JSP EL表达式之 empty

好 本文我们还是继续说EL表达式 我们来讲一个非空判断的好手 empty 我们直接编写代码如下 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html&…

Error querying database. Cause: java.lang.reflect.InaccessibleObjectException:

最近开发过程中&#xff0c;居然碰到了一个Arrays.asList的错&#xff0c;怎么个场景呢&#xff1f;传参一个用固定符号拼接的字符串&#xff0c;需要转成集合然后再myBatis里in判断。然后就报错了。 一、代码层面 service层面&#xff1a; shortDetailUrlList Arrays.asLi…

基于java实现捕鱼达人游戏

开发工具eclipse,jdk1.8 文档截图&#xff1a; package com.qd.fish;import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random;public class Fish {//定义鱼的图片BufferedImage fishImage;//定义鱼的数组帧BufferedImage[] fishFrame;//…

JSP JSTL引入依赖并演示基础使用

然后 我们来讲 JSTL Java server pages standarded tag library 简称 JSTL 这是 一个 JSP的标准标签库 JSP标准标签的集合 封装了JSP中的通用核心功能 根据JSTL类库提供的标签 可以将他分为5个类 1 核心标签 2 格式化标签 3 SQL标签 4 XML标签 5 函数标签 这边 我们主要将 核…

Leetcode201. 数字范围按位与

Every day a Leetcode 题目来源&#xff1a;201. 数字范围按位与 最直观的解决方案就是迭代范围内的每个数字&#xff0c;依次执行按位与运算&#xff0c;得到最终的结果&#xff0c;但此方法在 [left, right] 范围较大的测试用例中会因超出时间限制而无法通过&#xff0c;因…

机器学习与因果推断的高级实践 | 数学建模

文章目录 因果推断因果推断的前世今生&#xff08;1&#xff09;潜在结果框架&#xff08;Potential Outcome Framework&#xff09;&#xff08;2&#xff09;结构因果模型&#xff08;Structual Causal Model&#xff0c;SCM&#xff09; 身处人工智能爆发式增长时代的机器学…

【腾讯云云上实验室-向量数据库】用向量数据库——实现高效文本检索功能

文章目录 前言Tencent Cloud VectorDB 简介Tencent Cloud VectorDB 使用实战申请腾讯云向量数据库腾讯云向量数据库使用步骤腾讯云向量数据库实现文本检索 结论和建议 前言 想必各位开发者一定使用过关系型数据库MySQL去存储我们的项目的数据&#xff0c;也有部分人使用过非关…

牛客 算法 HJ103 Redraiment的走法 golang语言实现

题目 HJ103 Redraiment的走法 实现 package mainimport ("bufio""fmt""os""strconv""strings" )func main() {scanner : bufio.NewScanner(os.Stdin)nums : make([]int, 0)nums_len:0dp:make([]int, 0)for scanner.Scan()…

[JVM] 京东一面~说一下Java 类加载过程

系统加载 Class 类型的文件主要三步&#xff1a;加载->连接->初始化。连接过程又可分为三步&#xff1a;验证->准备->解析。 通过全限定名来加载生成 class 对象到内存中&#xff0c;然后进行验证这个 class 文件&#xff0c;包括文件格式校验、元数据验证&#xf…

crontab 定时检测 Tomcat 状态脚本实现及注意事项

背景 Jenkins 所在的 Tomcat 总是莫名挂掉&#xff0c;虽然任务配置了 NOKILLME 参数&#xff0c;而且并不是总是发生在编译完成后才挂的。怀疑是机器资源不足导致的&#xff0c;没有依据。最简单的办法是创建一个定时任务&#xff0c;检测 Tomcat 状态&#xff0c;不见了就拉…

【Spring集成MyBatis】MyBatis的多表查询

文章目录 1. 一对一什么是一对一User、Order类及Mapper&#xff0c;User、Order表一对一操作的实现一对一操作实现的第二种方式 2. 一对多什么是一对多一对多操作实现 3. 多对多什么是多对多多对多的实现 4. 小结 1. 一对一 什么是一对一 一对一指的是表与表之间通过外键进行…

Python 在 JMeter 中如何使用?

要在JMeter中使用Python&#xff0c;需要使用JSR223 Sampler元素来执行Python脚本。使用JSR223 Sampler执行Python脚本时&#xff0c;需要确保已在JMeter中配置了Python解释器&#xff0c;并设置了正确的环境路径。 1、确保JMeter已安装Python解释器&#xff0c;并将解释器的路…

ubuntu 编译linux webrtc库

ubuntu 编译linux webrtc库 安装依赖 sudo apt-get update sudo apt-get install build-essential libssl-dev libasound2-dev libpulse-dev libjpeg-dev libxv-dev libgtk-3-dev libxtst-dev libwebp-dev sudo apt-get install libglib2.0-dev sudo apt-get update 报错时出…

css Vue尺子样式

原生css生成尺子样式 <template><div class"page"><div class"Light"></div><div class"rile"><ul id"list"><!--尺子需要几个单位就加几个--><li></li><li></li&…

【实战】K8S Helm部署Redis Cluster Redisinsight

文章目录 前言部署Redis Cluster安装Redis Insight写在最后 前言 在Web服务的开发过程中&#xff0c;Redis一直以来都有着举足轻重的作用。基本上所有的后端服务都会用这个中间件实现具体的业务场景&#xff0c;比如常作为系统缓存、分布式锁&#xff0c;也可以实现排名、定位…

检索增强生成架构详解【RAG】

生成式AI技术很强大&#xff0c;但它们受到知识的限制。 虽然像 ChatGPT 这样的LLM可以执行许多任务&#xff0c;但每个LLM的基线知识都存在基于其训练数据的差距。 如果你要求LLM写一些关于最近趋势或事件的文章&#xff0c;LLM不会知道你在说什么&#xff0c;而且回答最好是混…