我使用 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(使用前将#替换为@)