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

基于Centos7.9搭建svn服务端

Svn-Server

    • 开始搭建
    • SVN 迁移

SVN 的全称为 Subversion,它是一个开源的版本控制系统。

  • 基本原理
    它采用集中式的版本管理方式,有一个中央版本库用于存放所有文件及版本信息,多个用户可以从这个中央版本库获取文件副本(称为工作副本)到本地进行操作,操作完成后再将更改提交回中央版本库。在这个过程中,SVN 能够记录文件的每一次修改、添加、删除等变更情况,方便回溯到不同的历史版本,查看文件是如何随着时间演变的。
  • 主要功能
    版本管理:能清晰地保存各个阶段文件的版本,用户可以轻松地查看某个文件过去的任意版本,便于对比不同版本之间的差异、恢复到之前的正确版本等,比如软件开发过程中对代码文件的版本管控。
    协同工作:支持多人同时在一个项目上进行开发等工作,不同开发人员对各自负责的模块进行修改、完善后,依次将修改提交到中央版本库,能有效避免多人修改造成的混乱,协调团队成员间的协作。
    权限控制:可以针对不同用户或用户组设置对文件、目录的不同访问权限,例如有的用户只有读取权限,而有的用户具备读写权限等,增强了项目的安全性和管理规范性。
  • 应用场景
    软件开发:是软件开发团队常用的工具之一,用于管理代码的版本迭代、开发分支等,方便团队成员共同开发一个大型软件项目,保证代码的有序性和可追溯性。
    文档管理:对于企业内部文档,像项目文档、技术文档等,也可以通过 SVN 进行版本控制和管理,方便不同部门、人员在不同阶段对文档进行更新、查阅等操作

开始搭建

在CentOS 7.9 上搭建 SVN 服务端(使用 Apache httpd + mod_dav_svn)

  • 安装必要软件包
    httpd: Apache HTTP 服务器。
    mod_dav_svn: 让 Apache 支持 SVN 的模块。
    subversion: SVN 客户端和服务端核心工具。
yum install -y httpd mod_dav_svn subversion

创建 SVN 版本库

  • 创建一个目录来存放所有的 SVN 仓库
mkdir -p /opt/svn
  • 创建一个新的 SVN 仓库
svnadmin create /opt/svn/myproject
  • 调整目录权限,让 httpd用户拥有读写权限:
chown -R apache:apache /opt/svn/myproject
chmod -R 770 /opt/svn/myproject
chcon -R -t httpd_sys_content_t /opt/svn/myproject
chcon -R -t httpd_sys_rw_content_t /opt/svn/myproject

配置HTTPD

  • 编辑 Subversion 的配置文件
    SVNParentPath /opt/svn: 表示 /opt/svn 下的每一个子目录都是一个独立的 SVN 仓库。访问时用 http://your-server-ip/svn/myproject。
    SVNPath /opt/svn/myproject: 表示只配置一个单一的仓库。访问时用 http://your-server-ip/svn。
    AuthUserFile /opt/svn/.htpasswd: 指定存放用户密码的文件。
    AuthzSVNAccessFile /opt/svn/authz: 指定权限控制文件。
vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so# 为 SVN 仓库定义一个位置
<Location /svn># 启用 SVN DAVDAV svn# 指向所有仓库的父目录(使用 SVNParentPath)SVNParentPath /opt/svn# 或者指向单个仓库(使用 SVNPath)# SVNPath /opt/svn/myproject# 认证类型:BasicAuthType BasicAuthName "Authorization Realm"AuthUserFile /opt/svn/.htpasswd# 授权控制文件AuthzSVNAccessFile /opt/svn/authz# 只有认证用户才能访问Require valid-user
</Location>

创建用户和权限文件

  • 创建第一个 SVN 用户
    -c 参数表示创建文件,后续添加用户时不要加 -c,以免覆盖。
    系统会提示输入并确认密码。
htpasswd -c -m /opt/svn/.htpasswd admin
  • 如果需要修改用户密码
    注意:不要使用 -c 参数,否则会创建新文件
    修改立即生效,无需重启
htpasswd /opt/svn/.htpasswd admin
  • 创建权限控制文件
    [groups]: 定义用户组,方便管理。
    [repository_name:/path]: 针对特定仓库的特定路径设置权限。
    @groupname = permission: 给组赋权。
    username = permission: 给个人赋权。
    权限:r (读), w (写), 空 (无权限)。
vi /opt/svn/authz
[groups]
# 定义用户组
admin = admin,user1
dev = user2,user3# 为所有仓库设置默认权限(无权限)
[/]
* =# 设置 myproject 仓库的权限
[myproject:/]
@admin = rw
@dev = r
user4 = rw# 设置另一个仓库 'project2' 的权限
# [project2:/]
# @admin = rw
# @dev = rw
  • 确保 httpd用户对这些文件有读权限
chown apache:apache /opt/svn/.htpasswd /opt/svn/authz
chmod 640 /opt/svn/.htpasswd /opt/svn/authz
  • 启动并启用服务
systemctl start httpd
systemctl enable httpd
  • 关闭防火墙和selinux
setenforce 0
systemctl stop firewalld
  • 浏览器界面访问:http://ip/svn/myporject
    输入设置的admin和用户后可查看

在这里插入图片描述

SVN 迁移

什么数据会被迁移?

  • 被迁移的是版本库本身的内容和历史,包括:
    所有版本的代码和文件
    每一次提交的日志信息(svn commit -m “message”)
    每一次提交的作者(username)
    目录结构、分支(branches)、标签(tags)
    所有的属性(properties)

什么数据不会被迁移?

  • 绝对不会被迁移的是认证系统的配置,包括:
    用户密码文件
    Apache 的 .htpasswd 文件
    svnserve 的 conf/passwd 文件
    权限控制文件
    authz 文件(Apache 或 svnserve 的)
    服务器配置
    Apache 的 httpd.conf 或 subversion.conf
    svnserve 的 conf/svnserve.conf
    钩子脚本(hooks/)

迁移前需要提前在目标服务器上配置用户和权限管理


使用 svnadmin dump 和 svnadmin load命令进行迁移

  • 在源服务器上导出转储文件
    使用 svnadmin dump 命令将版本库导出为一个文件
    /opt/svn/old_repo: 源版本库的路径。
    old_repo.svndump: 生成的转储文件,可以任意命名。
svnadmin dump /opt/svn/old_repo > /tmp/old_repo.svndump
  • 在目标服务器上准备并导入
    创建新的空版本库
mkdir -p /opt/svn
svnadmin create /opt/svn/new_repo
  • 加载转储文件到新库
svnadmin load /opt/svn/new_repo < /tmp/old_repo.svndump
  • 调整权限
chown -R apache:apache /opt/svn/new_repo
chmod -R 770 /opt/svn/new_repo
chcon -R -t httpd_sys_content_t /opt/svn/new_repo
chcon -R -t httpd_sys_rw_content_t /opt/svn/new_repo
  • 用户执行以下命令来切换工作副本指向新的服务器地址:
    进入本地仓库目录,然后切换到新的服务地址
cd /path/to/your/working-copy
svn switch --relocate http://old-server/svn/old_repo http://new-server/svn/new_repo .
  • 或者更简单直接的方法:重新检出一份,只是会重新下载仓库所有内容
svn checkout http://new-server/svn/new_repo new-copy
  • 验证地址
svn info

文章转载自:

http://f7dpfgSv.Lnfkd.cn
http://cHGCKKuc.Lnfkd.cn
http://wp6SUt4Q.Lnfkd.cn
http://agTtRMFU.Lnfkd.cn
http://shOxXhqt.Lnfkd.cn
http://feFe4QGk.Lnfkd.cn
http://UQ7cQz53.Lnfkd.cn
http://j91OqQmc.Lnfkd.cn
http://TGvGG9Tq.Lnfkd.cn
http://o5uJqSXD.Lnfkd.cn
http://A1H5O0Dj.Lnfkd.cn
http://FmHgma7A.Lnfkd.cn
http://uMU1hnWx.Lnfkd.cn
http://vPh9C5zj.Lnfkd.cn
http://HSua61Nb.Lnfkd.cn
http://RGzsJEVz.Lnfkd.cn
http://ieYTIAZ4.Lnfkd.cn
http://sXOQm3zC.Lnfkd.cn
http://3O4dDErQ.Lnfkd.cn
http://KgrCmKxp.Lnfkd.cn
http://EUzBcHYn.Lnfkd.cn
http://WDAXF8xt.Lnfkd.cn
http://4a9AxghC.Lnfkd.cn
http://nCz3NnJF.Lnfkd.cn
http://nGwxurgz.Lnfkd.cn
http://x4EpoaPQ.Lnfkd.cn
http://IKBeToJ5.Lnfkd.cn
http://7OZXmQhM.Lnfkd.cn
http://Nx3bHnCJ.Lnfkd.cn
http://aFss5Xz2.Lnfkd.cn
http://www.dtcms.com/a/374783.html

相关文章:

  • PyTorch 和nn.Conv2d详解
  • pytorch基本运算-分离计算
  • 基于容器化云原生的 MySQL 及中间件高可用自动化集群项目
  • “图观”端渲染场景编辑器
  • 构建分布式京东商品数据采集系统:基于 API 的微服务实现方案
  • HTML5点击转圈圈 | 深入了解HTML5技术中的动态效果与用户交互设计
  • springboot rabbitmq 延时队列消息确认收货订单已完成
  • CString(MFC/ATL 框架)和 QString(Qt 框架)
  • Sklearn(机器学习)实战:鸢尾花数据集处理技巧
  • 工具框架:Scikit-learn、Pandas、NumPy预测鸢尾花的种类
  • AI GEO 优化能否快速提升网站在搜索引擎的排名?​
  • nvm和nrm的详细安装配置,从卸载nodejs到安装NVM管理nodejs版本,以及安装nrm管理npm版本
  • 对口型视频怎么制作?从脚本到成片的全流程解析
  • 从“能说话”到“会做事”:AI Agent如何重构日常工作流?
  • 洛谷 P1249 最大乘积-普及/提高-
  • 小红书获取笔记详情API接口会返回哪些数据?
  • JAVA Spring Boot maven导入使用本地SDK(jar包)
  • Linux/UNIX系统编程手册笔记:SOCKET
  • F5和Nginx的区别
  • 9.9网编简单TCP,UDP的实现day2
  • Day39 SQLite数据库操作与HTML核心API及页面构建
  • Vue3 与 AntV X6 节点传参、自动布局及边颜色控制教程
  • 线程与进程的区别
  • RAC概念笔记
  • 如何将视频从安卓手机传输到电脑?
  • Day04_苍穹外卖——套餐管理(实战)
  • ElementUI 组件概览
  • fifo之读写指针
  • 【第三次全国土壤普查】一键制备土壤三普环境变量23项遥感植被指数神器
  • Java反射机制详解