我使用JIRA作为错误跟踪系统。如果有新发现的错误,则首先将其提交到主干。提交是在特定票证下完成的。 例如,票号#37由提交修复:65,68和74。
有时我需要将票证后退到分行。所以我必须为分支下载一个存储库,即#3并应用以下命令
svn merge -c65,68,74 http://.../svn/trunk
然后为每张票提交等等。
我想要做的是从JIRA和分支ID中指定门票列表。因此,它们将自动从主干合并到特定分支。
有哪些选择可以实现?
答案 0 :(得分:3)
如果您从提交消息中以一致的方式引用Jira票证,则使用Jira ABC-123票证号码格式,您可以通过搜索SVN日志获取修订列表。
svn log --search=FOO-57 http://.../svn/trunk
这将为您提供每个相关提交的日志消息和修订号。假设类似于unix的环境,你可以使用一些管道和shell操作将svn日志输出转换为修订版号列表,如下所示:
svn log --search=FOO-57 http://.../svn/trunk | grep ^r | cut '-d|' -f1 | sed s,r,,
稍微多一点shell操作可以用逗号分隔格式为您提供相同的修订列表:
REVISIONS=($(svn log --search=FOO-57 http://.../svn/trunk | grep ^r | cut '-d|' -f1 | sed s,r,,))
echo "${REVISIONS[*]}" | sed 's/ /,/g'
所以现在你可以只使用第二个命令的输出作为-c
的{{1}}参数进行合并
svn merge
您可以将搜索字词和网址替换为REVISIONS=($(svn log --search=FOO-57 http://.../svn/trunk | grep ^r | cut '-d|' -f1 | sed s,r,,))
svn merge -c$(echo "${REVISIONS[*]}" | sed 's/ /,/g') http://.../svn/trunk
和"$1"
,将上述内容转换为可重复使用的shell脚本。或者,如果您想一次将其应用于多个Jira票证,您可以将整个事物包装在一个循环中,如下所示:
"$2"
如果您希望避免使用shell脚本来获取修订列表,则可以使用任何具有#!/bin/bash
TRUNK_URL="http://.../svn/trunk"
REVISIONS=($((for search_term in "$@"; do
svn log --search="$search_term" "$TRUNK_URL" | grep ^r | cut '-d|' -f1 | sed s,r,,;
done) | sort -u))
svn merge -c$(echo "${REVISIONS[*]}" | sed 's/ /,/g') "$TRUNK_URL"
绑定的语言来获得类似的结果。以下是使用Python和pysvn的示例:
libsvn