SVN服务器简单配置过程

news2024/9/24 11:31:27

一、概述

在这里插入图片描述

SVN的全称是Subversion,是一个流行的开源的版本控制系统。Subversion可管理随时间改变的数据, 这些数据放置在一个中央资料档案库(repository) 中。 它就像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样当需要回退时,就能把档案恢复到旧的版本, 当然也就可浏览文件的变动历史。

相关概念:

repository(源代码库)::源代码统一存放的地方

Checkout(提取):从repository checkout源代码到本地调试

Commit(提交):当修改了代码,就需要Commit到repository以更新

Update (更新):当我们已经Checkout了一份源代码, Update一下就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

系统版本:BCLinux 8.6(GNU/Linux 4.19.0-372.26.2.el8.bclinux.x86_64)

Subversion版本:version 1.10.2 (r1835932)

官网:http://subversion.apache.org/,下载:https://tortoisesvn.net/downloads.html,下载2;镜像站;文档

二、SVN环境部署

在这里插入图片描述

1)安装

rpm -ql subversion
yum install subversion -y   //联外网直接yum
Last metadata expiration check: 2:19:02 ago on Mon 03 Jul 2023 11:21:52 AM CST.
Dependencies resolved.
=====================================================================================================================================================
 Package                          Architecture            Version                                                   Repository                  Size
=====================================================================================================================================================
Installing:
 subversion                       x86_64                  1.10.2-5.module+an8.6.0+10794+181dc1ae                    AppStream                  1.1 M
Installing dependencies:
 apr                              x86_64                  1.6.3-12.0.1.an8                                          AppStream                  128 k
 apr-util                         x86_64                  1.6.1-6.el8                                               AppStream                  104 k
 libserf                          x86_64                  1.3.9-9.module+el8.2.0+10160+765beef7                     AppStream                   59 k
 subversion-libs                  x86_64                  1.10.2-5.module+an8.6.0+10794+181dc1ae                    AppStream                  1.5 M
 utf8proc                         x86_64                  2.1.1-5.module+el8.2.0+10160+765beef7                     AppStream                   66 k
Enabling module streams:
 subversion                                               1.10                                                                                      

Transaction Summary
=====================================================================================================================================================
Install  6 Packages

Total download size: 3.0 M
Installed size: 10 M
Downloading Packages:
(1/6): apr-1.6.3-12.0.1.an8.x86_64.rpm                                                                               5.6 MB/s | 128 kB     00:00    
(2/6): apr-util-1.6.1-6.el8.x86_64.rpm                                                                               3.8 MB/s | 104 kB     00:00    
(3/6): libserf-1.3.9-9.module+el8.2.0+10160+765beef7.x86_64.rpm                                                      2.0 MB/s |  59 kB     00:00    
(4/6): subversion-1.10.2-5.module+an8.6.0+10794+181dc1ae.x86_64.rpm                                                   18 MB/s | 1.1 MB     00:00    
(5/6): utf8proc-2.1.1-5.module+el8.2.0+10160+765beef7.x86_64.rpm                                                     1.1 MB/s |  66 kB     00:00    
(6/6): subversion-libs-1.10.2-5.module+an8.6.0+10794+181dc1ae.x86_64.rpm                                             4.2 MB/s | 1.5 MB     00:00    
-----------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                7.6 MB/s | 3.0 MB     00:00    

在这里插入图片描述

#离线方式:将下载后的压缩包(共6个)依次解压,因下载限制,以网络上1.110版本描述
wget https://mirrors.cnnic.cn/apache/subversion/subversion-1.14.2.tar.gz
tar -zxvf subversion-1.14.2.tar.gz
cd subversion-1.14.2/
#解压后验证
ls subversion-1.14.2  //如下
aclocal.m4  BUGS   build.conf        CHANGES     configure     doc            gen-make.py  INSTALL  Makefile.in  README      tools
autogen.sh  build  build-outputs.mk  COMMITTERS  configure.ac  gen-make.opts  get-deps.sh  LICENSE  NOTICE       subversion  win-tests.py
#编译安装
./configure --with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--with-serf=/usr/local/serf \
--with-openssl

#方式三:依赖
tar -zxvf subversion-1.11.0.tar.gz
tar -zxvf apr-1.6.5.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf zlib-1.2.11.tar.xz
tar -zxvf expat_2.0.1.orig.tar.gz
tar -zxvf sqlite-autoconf-3260000.tar.gz

#安装Apr:http://apr.apache.org/
cd apr-1.6.5
#使用vi编辑configure文件,将其中的RM='$RM'改为RM='$RM -f';进入vi之后可以使用/RM='$RM'命令快速找到需要修改的位置
#完成后,预编译
./configure --prefix=/usr/local/apr
make 
make install

#安装apr-util
#进入apr-util安装包目录
cd apr-util-1.6.1
yum install expat-devel
#执行以下命令
./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr --with-expat=/usr/local/apr/expat
make && make install

#安装expat:http://sourceforge.net/projects/expat/files/expat/2.1.0/
cd expat-2.0.1
./configure --prefix=/home/SVN/expat
make && make install

#安装zlib,http://www.zlib.net/

cd zlib-1.2.11
./configure --prefix=/home/SVN/zlib
make && make install

#安装sqlite-autoconf,http://www.sqlite.org/download.html
#unzip sqlite-amalgamation-3230100.zip -d ../subversion-1.8.15
#复制文件夹sqlite-autoconf至/home/SVN/目录下
mkdir -p  ./subversion-1.11.0/sqlite-amalgamation
 
cp -r sqlite-autoconf-3260000/*  ./subversion-1.11.0/sqlite-amalgamation

#openssl安装,http://www.openssl.org/
tar zxvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
./config
make &&make  install

#serf模块(1.2.1),http://serf.googlecode.com/files/serf-1.2.1.tar.bz2;1.8版本之前的需要加neon,1.8版本之后弃用neon而改使用serf;另据subversion 1.8版本使用serf-1.3.0会有异常
tar xjvf serf-1.2.1.tar.bz2
cd serf-1.2.1
./configure
make && make install

#最后安装subversion

cd subversion-1.11.0
#执行以下命令
./configure --prefix=/home/SVN/subversion --with-apr=/home/SVN/apr --with-apr-util=/home/SVN/apr-util --with-zlib=/home/SVN/zlib --with-lz4=internal --with-utf8proc=internal
make
make install

2)验证

vi /etc/profile 	#修改如下行为:
export PATH=$PATH:/home/svn/subversion-1.12.0/bin
#保存退出后,立即生效
source /etc/profile

svnserve --version  //验证,输出如下
svnserve, version 1.10.2 (r1835932)
   compiled Jun  2 2022, 14:53:28 on x86_64-Anolis-linux-gnu

Copyright (C) 2018 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.
* fs_x : Module for working with an experimental (FSX) repository.

Cyrus SASL authentication is available.

3)配置

#创建svn目录
mkdir /svn
#创建版本库目录
svnadmin create version_repo
#验证:
ls  //如下所示,其中,authz为版本库用户权限管理;passwd为版本库使用用户信息配置,包括用户名和密码;svnserve.conf用于版本库信息配置,db目录:就是所有版本控制的数据存放文件;hooks目录:放置hook脚本文件的目录;locks目录:用来放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端;format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号;conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件
conf  db  format  hooks  locks  README.txt
#svnserve配置
cd ./conf
vim svnserve.conf  //默认基本都是注释的,需要我们解注释如下项

[general]
auth-access = write   //认证用户访问权限,默认为write
password-db = passwd	//用户信息文件,默认即可
authz-db = authz         //版本库用户访问权限配置,默认即可
realm = My First Repository  //指定版本库认证域,如果两个仓库拥有相同的认证域,则需要使用相同的authz和password文件

#配置验证:
cat svnserve.conf |grep -Ev '^#|^$'

#创建SVN仓库用户
vim passwd  //配置登录访问SVN用户,格式:用户名 = 密码

[users]
xiaowang = 123456

#修改用户访问权限
vim authz  //在 [groups]下建立用户组yanfa,后面的值是要添加进本组的用户名,以逗号分隔
[groups]
yanfa = xiaowang  
[/svn]
@yanfa = rw  //@ 指向用户组,单个用户无需添加,还可配* = r,*代表上述未提到的用户和用户组的权限配置。

4)启动服务

svnserve -d -r /svn // -d 表示以后台模式启动, -r 指定svn服务的根目录
svnserve -d -r /svn/ --listen-port 13690 --log-file /var/log/vncserver.log //修改服务端口
svnserve -r /svn/ --listen-port 13690 --foreground //debug调试

netstat -antp|grep svn   //Subversion默认使用的端口为3690

tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      3409822/svnserve

#本地验证
svn co svn://svn_ip:port/version_repo
svn checkout svn://127.0.0.1/version_repo    #将文件checkout到本地目录
svn add file		#往版本库中添加新的文件
#查看当前版本库的状态
svn status 或 svn status -v
#库变化比较
svn diff

5)客户端验证

开通3690的访问策略后(firewall-cmd --zone=public --add-port=13690/tcp --permanent),使用TortoiseSVN客户端连接验证;svn://ip地址:3690/xxxx,其中:xxxx为前文创建的版本库名称
在这里插入图片描述
在这里插入图片描述

三、附录

1)版本库新增

若要在/svn目录下添加新的版本库,直接新建相应的目录,然后设置为版本库,最后配置即可,不需要重新运行svnserve -d -r /svn,也不需要把该命令应用到/svn目录下你所新建的目录,如果因为误操作执行了以上命令,会导致资源库不可用,再次运行svnserve -d -r /home/svn也会报:“不能绑定服务器套接字 地址已在使用”的错误字样“(若已至此,删掉新建的资源库,并用ps -ef | grep svnserve查看进程,kill -9 [进程号] 杀掉,重新执行svnserve -d -r /svn,再次新建资源库,直接配置即可使用)

2)产品优缺点
在这里插入图片描述

优点:

1.对于某些项目的核心代码或者是一些重要的保密性要求较高的项目,svn比git更适合。

2.svn支持空目录

3.svn有更好的windows平台支持

4.svn可以check out/clone一个子树(sub-tree)

5.svn支持特权访问控制svn lock,在处理很难合并的文件时非常有用

6.svn支持二进制文件,更容易处理大文件(不需要把老版本拷来拷去)

7.学习简单、使用简单

缺点:

1.无网的情况下:无法提交代码,无法查看代码的历史版本、无法同步代码

2.代码要定期做备份(所有的代码数据及版本变更记录)

3.分支切换缓慢

4.由于每次提交都会保留一个原始副本,因此SVN的数据库容量会暴增。尤其是在开发人员非常多的情况下。

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

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

相关文章

【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~

Java可执行命令之jarsigner 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法3.1.1 可选参数&#xff1a;jarsigner -keystore < url>3.1.2 可选参数&#xff1a;jarsigner -storepass <口令>3.1.3 可选参数&#xff1a;jarsigner -keypass <口令>3.1.4 可选参…

数字信号处理复习(一):离散傅里叶变换(DFT)

一&#xff1a;为什么需要离散傅里叶变换 我们知道在傅里叶变换中存在连续信号和离散信号变换从而诞生了有拉普拉斯变换&#xff08;连续信号&#xff09;、Z变换&#xff08;离散信号&#xff09;&#xff0c;这两种变换是方便以前没有计算机时工程师们手动计算傅里叶变换。而…

同构:编程中的数学(文末送书4本)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

多项目管理难在哪,多项目同时进行该如何做好进度管理?

最近&#xff0c;听到群里的项目经理吐槽&#xff0c;手上有10多个项目同时进行&#xff0c;工作起来手忙脚乱&#xff0c;杂乱无章&#xff0c;让他压力特别大。 对于项目经理来说&#xff0c;多项目并行推进的情况已是常态。从工作层面来说&#xff0c;不仅在各项目之间抢资…

解决 fatal: Authentication failed for ‘https://github.com/*/*.git/‘

原因&#xff1a;github 的认证策略发生了改变&#xff0c;在 2021年8月13日 的时候&#xff0c;用户名加密码的认证方式被去掉了&#xff0c;换成了 个人令牌&#xff08;Personal Access Token&#xff09;的校验方式。 官网解决方案&#xff1a;管理个人访问令牌 - GitHub …

数分面试题- 面试智力题

目录标题 1、如何用3L和5L桶量取4L水2、有两圈蚊香&#xff0c;一圈烧完需要1小时&#xff0c;怎么才能确定出15分钟/45分钟时间3、提灯过桥问题4、开关灯问题5、赛道赛跑问题6、砝码称重问题6.1 有10瓶药&#xff0c;每瓶有10粒药&#xff0c;其中有一瓶是变质的。好药每颗重1…

家政保洁维修上门预约系统开发;

家政保洁维修上门预约系统开发&#xff1b; 保洁&#xff0c;家电清洗等上门业务系统&#xff0c;支持派单接单&#xff0c;按区域&#xff0c;就近分配、套餐年卡等&#xff1b; 育婴月嫂系统 保姆筛选&#xff0c;简历主页&#xff0c;推荐跟进&#xff0c;在线合同&#xf…

IPO观察丨背靠百度、专注医疗内容营销,为何健康之路举步维艰?

互联网医疗赛道竞争加剧下&#xff0c;相关企业不仅在市场扩张上角逐&#xff0c;也在IPO道路上持续追赶。 仅就6月份而言&#xff0c;就有药师帮、方舟云康、健康之路等几家企业在持续推进上市进程&#xff0c;其中&#xff0c;药师帮已于6月28日成功登陆港交所&#xff0c;而…

pycharm断点调试

第一步&#xff1a;打上断点 第二步&#xff1a;进入调试模式 第三步&#xff1a;分析button作用 Resume Program&#xff1a;进入下一个断点show execution point (F10) &#xff1a;显示当前所有断点step over(F8) &#xff1a;单步调试&#xff0c;若函数A内存在子函数时&a…

改变下拉框中内容显示的顺序方法

在官网上&#xff1a; 如图所示&#xff1a;先点击龙须面&#xff0c;再点击虾仔煎的时候&#xff0c;会在下拉框中按照用户的点击顺序显示出来。 问题&#xff1a;前端如何按照黄金糕-双皮奶-虾仔煎-龙须面的顺序显示点击的值呢&#xff1f;这样做的一个好处就是按后端的顺序…

【2023】性感美少女-InsCode Stable Diffusion 美图活动一期

作者&#xff1a;闲散的不务正业的运维目录 一、 Stable Diffusion 模型在线使用地址&#xff1a;二、Stable Diffusion如何使用三、模型相关版本和参数配置&#xff1a;四、图片生成提示词与反向提示词&#xff1a;五、种子及对应图片&#xff1a;六、总结 一、 Stable Diffus…

Qt的发展如何?它是否是一个就业的好选择?

Qt是一种流行的跨平台应用程序开发框架&#xff0c;被广泛用于构建图形用户界面&#xff08;GUI&#xff09;和嵌入式应用程序。它具有良好的可移植性和可扩展性&#xff0c;并支持多种编程语言&#xff0c;如C、Python和JavaScript。 Qt的发展一直稳步推进&#xff0c;并且在…

I.MX6ULL_Linux_驱动篇(39) 阻塞和非阻塞IO

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式&#xff0c;在编写驱动的时候一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO&#xff0c;以及如何在驱动程序中处理阻塞与非阻塞&#xff0c;如何在驱动程序使用等待队列和 poll 机制。 阻塞…

HTML5+CSS3+JS小实例:可自由拖拽排序的表格

实例:可自由拖拽排序的表格 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=…

嗨爆全场!联诚发大屏与荧光棒闪耀周杰伦海口演唱会!

6月29日-7月2日&#xff0c;2023周杰伦嘉年华世界巡回演唱会海口站在海口五源河体育场震撼开唱&#xff0c;来自世界各地的数万名歌迷粉丝齐聚椰城&#xff0c;共享狂欢盛宴。联诚发LCF龙腾S系列LED透明屏和智慧荧光棒系列产品在演唱会现场大放异彩&#xff0c;陪伴粉丝朋友们一…

2023 全球数字经济大会人工智能高峰论坛,和鲸科技入选北京市人工智能行业赋能典型案例

7月&#xff0c;由国家发展改革委、工业和信息化部、科技部、国家网信办、商务部、中国科协联合北京市人民政府共同主办“2023全球数字经济大会”在京召开&#xff0c;本届活动主题为“数据驱动发展&#xff0c;智能引领未来”。其中“人工智能高峰论坛”重点围绕通用人工智能大…

Leetcode-每日一题【61.旋转链表】

题目 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3] 示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4输出&#xff1a…

网页的动静分离设置

我们都知道nginx处理静态网页是强项,而tomcat处理动态网页是强项.我们可以发挥他们共同的优点.nginx处理静态页面而tomcat处理动态页面 进入nginx配置文件改 总结 1.改配置文件最好复制一份 2.做一步验证一步 才知道哪里出错了 3.出错了别着急先看页面在浏览器能不能打开 不…

Python 字节数组方式写入kafka(含报错return ‘<SimpleProducer batch=%s>‘ % self.async)

一、背景 项目开发了一个类似kafka tools查询工具的kafka 查询&#xff0c;现在需要测试一下如果通过字节数组的形式写入&#xff0c;看看查询有没有问题 二、kafka查询代码 Python代码示例&#xff1a; from kafka import KafkaProducer import json# 创建Kafka生产者 pro…

搭建高性能数据库集群之三:Keepalived实现MySQL集群高可用

搭建高可用集群&#xff0c;2台HAProxy 可实现Mycat多节点的集群高可用和负载均衡&#xff0c;而HAProxy 的高可用&#xff0c;由Keepalived来实现。Keepalived负责为该台服务器抢占vip(虚拟IP)&#xff0c;抢到后对该主机访问。 搭建高可用集群&#xff1a; 上图&#xff0…