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

min*_*ata 5 svn commit jira

我使用SVN-1.7.4进行版本控制,使用atlassian JIRA作为我的LAMP网站的问题跟踪器.我希望限制SVN提交,如果我的任何团队成员提交,而不提及相同的Jira Issue密钥.我正在使用JIRA standalone并将其安装在我的服务器上.谷歌搜索给了我Subversion Jira插件(https://studio.plugins.atlassian.com/wiki/display/SVN/Subversion+JIRA+plugin),但它只能帮助我跟踪有JIRA密钥的提交,而不是限制他们.如果我发布有关该问题的更多细节,请告诉我.

ako*_*sky 8

使用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
Run Code Online (Sandbox Code Playgroud)

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


Dav*_* W. 5

我碰巧有一个预先提交的钩子,涵盖了这个(以及许多其他的东西).

钩子可以通过Git-Hub获得.它不验证Jira ID是否存在,但它可以验证提交消息中是否存在类似Jira的ID.这通常足以确保开发人员在其提交消息中添加Jira票号.有一个示例control.ini文件,向您展示如何在提交消息中检查类似Jira的票号.有效的提交消息的格式如下:

  • NONE:我修复了一个没有Jira票号的问题
  • FDS-1231:我修了一张Jira票
  • FDS-1231,FDS-3232:我修好了几张Jira门票

但是,比预先提交钩子更好的方法是改变工作场所的文化,这样开发人员自然会将Jira票号放在提交消息中,并自动提供更详细的提交消息.我发现使用像Jenkins这样的连续构建服务器会这样做.

每次签入时,Jenkins都会自动构建您的代码.每个构建都会显示更改和提交注释.Jenkins集成到Jira,只需点击一下,即可看到Jira信息​​.Jenkins还会附加提交消息并在Jira票证上构建#,因此QA人员可以查看特定的Jira票证,并查看修复此票证的构建.

突然,提交消息信息变得更加明显.开发人员和QA开始依赖它.不添加Jira票证的开发人员不是由那些执行构建的人,而是他们的老板和他们的开发人员.现在,提交好的提交消息就成了这个地方的文化.并且,这是一种比任何预提交钩子更好的执行器.