1

我们在Windows上使用 VisualSVN Server 2.5.6 (重要!)。

我们的大多数 SVN 存储库都具有标准结构:

/trunk
/branches
/tags

我们想要:

  • 允许人们创建新标签
  • 禁止他们修改现有标签

不要问...有时他们真的会尝试对现有标签进行更改))

我发现了一个非常好的预提交钩子—— 来自标准钩子脚本的svnperms.py

配置文件中的示例 2 可能是我需要的:

[example2]
trunk/.* = *(add,remove,update)
tags/[^/]+/ = *(add)
branches/[^/]+/.* = *(add,remove,update)

真的很强大很简洁!

但它在 Windows 上无法正常工作 - 失败并显示错误消息:

D:\Repositories\Ivan_dev\hooks>svnperms.py -r D:\Repositories\Ivan_dev -s default_permissions_configuration -R 8
svnlook author D:\Repositories\Ivan_dev -r 8
'{' is not recognized as an internal or external command,
operable program or batch file.error: command failed: svnlook author D:\Repositories\Ivan_dev -r 8
'{' is not recognized as an internal or external command,
operable program or batch file.

据我了解,它失败是因为它在 Python 中的设计方式:

svnperms.py 用来运行底层 svnlook 命令的 commands 模块仅适用于 Unix。

从这里:http ://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=72052

我真的很喜欢 svnperms.py 的方法,它允许您控制添加删除修改操作(符合 SVN 中的 A、D 和 M 类型的更改),而不仅仅是authz 模块中的读取写入

此外,由于用于指定路径的正则表达式,它提供了无限的功能。

是否有类似的适用于 Windows 的 SVN 挂钩脚本?

不幸的是,我不了解 Python,但在 Perl 方面经验丰富。所以甚至考虑将 svnperms.py 重写为 Perl ......但这需要几个小时,加上测试......

4

0 回答 0