【问题标题】:SVN pre-commit hook script to block users changing certain repository filesSVN 预提交挂钩脚本以阻止用户更改某些存储库文件
【发布时间】:2012-04-27 15:50:22
【问题描述】:

我想阻止我的 SVN 存储库的用户签入对某些文件的更改。我通过使用以下预提交钩子脚本完成了这项工作。然而,受限文件的数量正在增长,提交更改变得非常缓慢。我想知道是否有更有效的编码方式,我玩过更改列表,但无法完成。

提前致谢

预提交挂钩脚本(基于 Windows 的 SVN 存储库):

setlocal
:: Inputs from Subversion
set REPOS=%1%
set TXN=%2%

:: Checks if one of the reference files
Rem Check if the commit contains reference files
svnlook changed %REPOS% -t %TXN% | findstr /r /i "^.*referenceparts/part1.txt" > nul
if %errorlevel%==0 (goto RefPart)
svnlook changed %REPOS% -t %TXN% | findstr /r /i "^.*referenceparts/part2.txt" > nul
if %errorlevel%==0 (goto RefPart)
......
.....
etc etc

exit 0

:: Blocks the commit if part are reference
: RefPart
echo. 1>&2
echo ---------------------------------------------------------------------- 1>&2
echo Your commit has been cancelled because you are trying to change a      1>&2
echo part for a reference turbine! Please make a copy of this part and      1>&2
echo save it under a different name.                                        1>&2
echo ---------------------------------------------------------------------- 1>&2
echo. 1>&2
exit 1

【问题讨论】:

  • 你可能应该找到一种不同的方法来锁定文件,但也许只做一个svnlook changed %REPOS% -t %TXN% 可能会有所帮助(我不知道那是瓶颈还是 findstr)。

标签: svn pre-commit-hook


【解决方案1】:

将“参考涡轮”分解成不同的svn存储库,将其构建为库,并将其作为库分发。然后只将“参考涡轮机”库的访问权限授予需要它的人。

检查由无权更改的人构建数百次不可修改的源代码只是浪费电力和时间。

如果您担心他们需要在调试会话期间逐步检查参考涡轮源,请提供两个版本的库,一个带有调试符号和相应的源代码,一个没有调试符号。大多数 IDE 都有加载“源代码”包以提供人类可读文本以伴随调试会话的概念。

【讨论】:

    【解决方案2】:

    我会重写它以使用 perl 而不是 windows cmd 脚本。 Perl 有更好的正则表达式支持,因此您可以让它更快一点,而不是使用脚本来查看所有参考文件 - 您可以过滤目录和模式。

    Strawberry perl 很容易运行 - 下载它,将 exe 和 perl dll 放在路径上的目录中,工作完成。

    请注意,我也曾经使用 findstr 和 windows 脚本来过滤文件扩展名列表,这很快。我将 svnlook 的结果更改为一个文件(不要忘记将 revnum 附加到文件名并随后将其删除)并将其用作带有 /G 选项的 findstr 命令的输入。先试试看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多