svn仓库迁移宿主机后,除邮件或DM知会外,还能如何对用户做出提示?

2024-03-29 07:48

本文主要是介绍svn仓库迁移宿主机后,除邮件或DM知会外,还能如何对用户做出提示?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景

svn仓库迁移宿主机后,配置库管理员往往会通过邮件或DM知会svn用户。当svn用户数量庞大,加上消息泛滥的情况,用户往往无法及时得知切换的事宜和方法,只有当用户svn ci时才提示报错无法check in,却在此时手忙脚乱地找支持人员却发现忙线中。

问题

那么我们还能如何对用户做出更高效提示?

思考

对于用户而言,需要在working copy的根目录执行

svn switch --relocate old_url new_url

在本例,我会以这个为例

svn switch --relocate svn+ssh://thesre.cn/repo01 svn+ssh://192.168.1.1/repo01

那么该提示,如何及时地出现在用户需要使用的时候呢?

svn Hook(svn钩子)

svn服务器提供了svn transition前中后各个时间点的钩子功能。本场景我们可以对提交时的start-commit钩子加以利用,使其帮我们自动提示用户切换事宜与操作步骤。
让我们来看看start-commit-tmpl长什么样子,

[thesre@centos8 hooks]$ cat templates/start-commit.tmpl| egrep -v '^#|^$'
REPOS="$1"
USER="$2"
commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1
special-auth-check.py --user "$USER" --auth-level 3 || exit 1
exit 0

阅读该template的说明,可以看到位置参数1是仓库路径,位置参数2位用户名称。该template会执行两个脚本检查,只要有一个不通过就exit 1退出。

实践

如何来完成我们的提示?我们在原svn服务器的仓库上加上start-commit,内容如下,

[thesre@centos8 hooks]$ cat start-commit
#!/bin/shREPOS="$1"
USER="$2"repo_name=`echo $REPOS|awk -F/ '{print $NF}'`
echo "Your repo $repo_name has been relocated, please run the following command to switch:" 1>&2
echo "" 1>&2
echo "svn switch --relocate svn+ssh://thesre.cn/$repo_name svn+ssh://192.168.1.1/$repo_name" 1>&2exit 1

由上,我们可以输出三行包含事件需要的操作的提示到stderr,原svn服务器会将start-commit的stderr输出给用户的terminal中。这样可以达到通知的效果。
如下所示:

╭─ben at MacBook Pro in /tmp/repo01 2021/04/19 - 22:00:34
╰─○ svn ci -m "by thesre." #切换前,用户提交到原服务器,将会得到提示
Adding         folder01
Adding         folder01/test.txt
Transmitting file data .svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by start-commit hook (exit code 1) with output:
Your repo repo01 has been relocated, please run the following command to switch:svn switch --relocate svn+ssh://thesre.cn/repo01 svn+ssh://192.168.1.1/repo01

svn用户看到上述提示,就知道如何进行切换了,

╭─ben at MacBook Pro in /tmp/repo01 2021/04/19 - 22:28:09
╰─○ svn info . | grep "Repository Root"
Repository Root: svn+ssh://thesre.cn/repo01
╭─ben at MacBook Pro in /tmp/repo01 2021/04/19 - 22:28:12
╰─○ svn switch --relocate svn+ssh://thesre.cn/repo01 svn+ssh://192.168.1.1/repo01 #执行切换命令
╭─ben at MacBook Pro in /tmp/repo01 2021/04/19 - 22:28:14
╰─○ svn info . | grep "Repository Root"
Repository Root: svn+ssh://192.168.1.1/repo01

这直接省了很多低效率的沟通。

参考文献

  • start-commit — Notification of the beginning of a commit.
  • svn文件系统事务
  • /subversion/trunk/contrib/hook-scripts
  • /subversion/trunk/tools/hook-scripts

这篇关于svn仓库迁移宿主机后,除邮件或DM知会外,还能如何对用户做出提示?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858030

相关文章

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2