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

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

idea下svn的使用

创建项目 设置ignore文件 创建分支 切换到分支 查看当前分支 创建项目 设置ignore文件 .idea.mvntarget.gitignore*.imlmvnw.cmdmvnw 创建分支 切换到分支 查看当前分支

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

CentOs7上Mysql快速迁移脚本

因公司业务需要,对原来在/usr/local/mysql/data目录下的数据迁移到/data/local/mysql/mysqlData。 原因是系统盘太小,只有20G,几下就快满了。 参考过几篇文章,基于大神们的思路,我封装成了.sh脚本。 步骤如下: 1) 先修改好/etc/my.cnf,        ##[mysqld]       ##datadir=/data/loc

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试