如果 Jira Issue 键不在提交消息中,则限制 Subversion 提交

2023-12-28

我使用 SVN-1.7.4 进行版本控制,使用 atlassian JIRA 作为我的 LAMP 网站的问题跟踪器。如果我的任何团队成员在未提及 Jira Issue 密钥的情况下进行提交,我想限制 SVN 提交。 我正在独立使用 JIRA 并将其安装在我的服务器上。 Google 搜索给了我 Subversion Jira Plugin (https://studio.plugins.atlassian.com/wiki/display/SVN/Subversion+JIRA+plugin),但它只能帮助我跟踪具有 JIRA 密钥的提交,而不能帮助我在限制他们。 如果我应该发布有关该问题的更多具体信息,请告诉我。


使用 JIRA ReST API 检查 JIRA 中是否也存在该问题并不困难。

在我们的例子中,我使用了pre-commit.tmpl文件并在开头注释部分后添加以下内容:

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
CURL=/usr/bin/curl
JIRAURL=http://our.jira.url:8080/rest/api/latest/issue

# Make sure that the log message contains some text.
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS")
echo ${LOGMSG} | grep "[a-zA-Z0-9]" > /dev/null || exit 1

# check that log message starts with a JIRA ticket
# should have format 'FOO-123: my commit message' or 'FOO-123 my commit message'
JIRAID=$(expr "${LOGMSG}" : '^\([A-Z]*-[0-9]*\)[: ].*')
if [[ "$JIRAID" == "" ]]
then
  echo "No JIRA id found in log message \"${LOGMSG}\"" >&2
  echo "Please use log message of the form \"JIRA-ID: My message\"" >&2
  exit 1
fi

# check if JIRA issue exists
JIRAISSUE=$(${CURL} ${JIRAURL}/${JIRAID})
if [[ "${JIRAISSUE}" =~ "Issue Does Not Exist" ]]
then
  echo "The JIRA id ${JIRAID} was not found" >&2
  echo "Please use log message of the form \"JIRA-ID: My message\"" >&2
  exit 1
fi

这要求消息的格式为“JIRA-id:文本”或“JIRA-id test”。您可以使正则表达式更加通用,以允许 JIRA id 出现在文本中的任何位置。您还可以添加检查${JIRAISSUE}确保问题在需要时开放,但这似乎足以满足我们的目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 Jira Issue 键不在提交消息中,则限制 Subversion 提交 的相关文章

  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • 使用 POST 请求向 Jira API 发送 JSON 时出现 System.Net.WebException

    好吧 伙计们 我已经为这个问题苦苦挣扎了一天左右 但没有明确的解决方案 我将从例外开始 The remote server returned an error NotFound at System Net Browser AsyncHelp
  • ASP.NET 显示 SVN 修订号

    我在 Stack Overflow 页脚中看到显示了 SVN 修订号 这是自动化的吗 如果是的话 如何在 ASP NET 中实现它 其他语言的解决方案也是可以接受的 确保该文件有 svn keywords Rev Id 然后把 Rev 在那
  • 设置可视化SVN服务器后无法浏览存储库

    我在 Windows 7 x64 系统上安装了 VisualSVN Server 2 1 7 我已使用所有默认选项 安装路径 C Program Files x86 VisualSVN Server 存储库路径 D Repositories
  • 找不到 cygwin setup.exe 文件?

    我正在尝试将 subversion 数据包添加到 cygwin 为此我需要运行 setup exe 但我在 cygwin 文件夹中找不到它 它会位于哪里 它不是incygwin 文件夹 它位于您上次安装时放置的位置 很可能是垃圾箱或临时目录
  • 合并来自并行 Subversion 存储库的更新代码

    我想知道人们在将实时 持续更新的 SVN 存储库与离线存储库 更新频率较低 合并时通常会采取哪些步骤 以我的场景为例 不久前我下载了BugTracker NET系统 当时它的版本是3 2 3 随后我对我们业务的代码进行了一些增强 我们使用
  • IntelliJ Subversion 需要身份验证对话框

    我正在尝试从颠覆存储库中签出一个项目 我已输入我的信息 例如网址 用户名和密码 我可以看到我的存储库中的文件夹列表 我选择我的项目并选择要签出到的目录 一切似乎都很顺利 我在 结帐选项 中单击 确定 进行结帐 选择 1 7 格式 这就是我正
  • 基于网络的颠覆查看器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SVN 存储库的总大小?

    当我测量服务器上的文件夹大小时 我有一个 8 GB 的 SVN 存储库 但是当我在本地检查它时 只需从根目录检查完整存储库 所有分支 标签 其大小为 50 GB 仍在计算中 看来 SVN 在压缩内容方面做得很好 怎么尺寸相差这么大 有没有什
  • 在 Ubuntu 上通过 Apache Web 服务器和 DAV 启用 Subversion 访问

    我的家庭网络上有一台运行 Ubuntu 20 的 PC 我想将其用作我家本地网络中的 Subversion 服务器 我安装了 Apache Web 服务器并安装了 Subversion 现在我想使用 HTTP DAV 协议通过 Apache
  • 如何修复损坏的本地 Subversion 工作副本?

    我通常使用 git 对 Subversion 的基础知识知之甚少 所以请保持温柔 我在 Windows 7 上使用 TortoiseSVN SVN 客户端最近宣布需要升级 所以我就这么做了 所有文件都丢失了源代码管理图标 并且资源管理器中出
  • 移动具有历史记录的目录

    我有一个这样的 SVN 结构 Projects Project1 Project2 someFolder Project3 Project4 我想将所有项目移动到 Projects 文件夹中 这意味着我想将项目 3 和 4 从 someFo
  • intellij idea 和 eclipse 可以一起使用吗

    对于某些人来说 这可能看起来有点奇怪 但我仍然想知道这是否可能 到目前为止 我们有很多项目是在 eclipse 上编写的 我们中的一些人想进入 intellij idea 的世界 我们可以同时通过 eclipse 和 intellij 一起
  • 将Redmine问题与SVN修订版联系起来的最佳方法

    我们使用 Redmine 进行问题和错误跟踪 我们添加了 SVN 集成 但通过这样做 它仅显示活动中的 SVN 修订 如果能看到由错误或问题引起的所有 SVN 更改 那就太好了 但这似乎不可能 有没有办法做到这一点 如果不是Redmine
  • Tortoise SVN 合并“@### 必须与 @### 有祖先关系”错误

    背景故事 找到了一份入门级 Web 开发人员的工作 当我开始工作时 首席开发人员就离开了 一切责任都在我身上 没用过SVN 盲目进去 Problem 我不断收到类似错误 svn svn svn xxx project name branch
  • 如何使用 svnkit 列出本地修改/未版本化的文件?

    我正在编写一段代码 一旦在 SVN 工作副本中的任何位置执行 就会找到根目录 File workingDirectory new File getCanonicalFile File wcRoot SVNWCUtil getWorkingC
  • tmatesoft.svn.core.SVNAuthenticationException:svn:E170001

    我们正在一个遗留项目 maven 中工作来设置devop 詹金斯首发 Jenkins 构建现在没有问题 但是 在将 sonarqube 与 jenkins 集成时 我们收到以下错误 ERROR Error during SonarQube
  • Ubuntu + SVN:无法打开请求的 SVN 文件系统

    我知道这个问题已经被问过很多次了 我相信我明白答案 但我仍然没有运气 我都尝试过one repo and multiple repos配置 两者都有相同的问题 因此 对于我感兴趣的配置
  • 持续集成颠覆

    抱歉 如果这个问题的答案已经存在 我还没有找到 我是网络开发团队的成员 我们维护一个网络门户 发布管理与 Subversion 配合使用 这就是我向门户添加新功能时的工作方式 通过复制 Trunk 创建新的 Branch 在那个分支发展 定
  • 递归删除属性

    Tortoise SVN 可以选择递归地将属性应用于所有子文件夹 子文件 现在我需要删除这个属性 我怎样才能递归地做到这一点 我没有找到如何使用 GUI 递归删除属性 但您可以使用 svn 命令行工具删除属性 svn propdel PRO

随机推荐