SVN 预提交 Hook ,用于避免更改标签子目录

标签 svn tags svn-hooks pre-commit

是否有人对如何添加避免更改标签子目录的预提交 Hook 有明确的说明?

我已经在互联网上搜索了很多。我找到了这个链接:SVN::Hooks::DenyChanges ,但我似乎无法编译东西。

最佳答案

我没有足够的声誉来“评论”Raim 的上述答案,但他的效果很好,除了一个异常(exception),他的 grep 模式是错误的。

我只是使用以下内容作为我的预提交 Hook (我没有现有的 Hook ,在这种情况下您需要合并):

#!/bin/sh

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

SVNLOOK=/opt/local/bin/svnlook

# Committing to tags is not allowed
$SVNLOOK changed -t "$TXN" "$REPOS" | grep "^U\W.*\/tags\/" && /bin/echo "Cannot commit to tags!" 1>&2 && exit 1

# All checks passed, so allow the commit.
exit 0

Raim 的 grep 模式的唯一问题是,它仅匹配位于存储库“根”位置的“标签”。由于我的存储库中有多个项目,因此他编写的脚本允许在标记分支上提交。

此外,请务必按照指示 chmod +x ,否则您会认为它工作是因为提交失败,但它失败是因为它无法执行预提交 Hook ,而不是因为 Hook 工作.

这真的很棒,谢谢雷姆。比所有其他建议更好、更轻,因为它没有依赖性!

关于SVN 预提交 Hook ,用于避免更改标签子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/464384/

相关文章:

git - 如何按时间顺序记录所有 Git 提交?

svn - Visual Svn 服务器上的 "Chunk delimiter was invalid"或 "Could not read chunk size"

css - 如何在不使用表格的情况下制作联系表格?

javascript - 如何从 html 标签临时将数据存储在 javascript 中?

SVN 提交后 : Who is the user that committed?

c# - 使用 Jenkins 通过 SVN 构建 C# 项目 - 构建成功,但输出在哪里?

php - 如何以编程方式获取 SVN 修订号?

java - 在 java 中包含 css(用于 href 标签)

svn - VisualSVN 预提交规则

svn - 为 Tortoise SVN 创建一个必需的注释钩子(Hook)