使用shell在svn hook中强制标记名称

时间:2014-05-21 18:00:45

标签: bash shell svn

我正在尝试编写一个预提交钩子脚本来强制执行像<application>_<project>_<version>_<iteration>这样的标记命名约定 使用shell脚本。 任何人都可以引导我到我可以通过的文档/链接,并可以创建一个?我已经通过了许多链接,但没有为我工作。

我正在尝试这样的事情

ERROR=$SVNLOOK changed $REPO -t $REV |$EGREP "^A.+?/([a-z0-9_]+)/tags/\1-[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?-(dev|rc[0-9]+|final)/.*$" |$WC -l

在regex(EGREP)部分需要帮助,以便我可以创建它。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

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

$SVNLOOK changed -t "$TXN" "$REPOS" | \
  $EGREP -q "^A...([a-z0-9_]+)/tags/" && \
  ! $EGREP -q "^A...([a-z0-9_]+)/tags/\1-[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?-(dev|rc[0-9]+|final)/.*$" && \
  echo wrong tag pattern >&2 && exit 1

这里的想法是,如果一行与^A...([a-z0-9_]+)/tags/匹配,但它与^A...([a-z0-9_]+)/tags/\1-[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?-(dev|rc[0-9]+|final)/.*$不匹配,则中止提交。