我从头开始设置了一个 SVN 存储库,并使用 SVN 复制命令成功标记了我的一些版本。

我使用了 apache 的 SSPI auth 插件,因此我们的开发人员只需使用他们的网络凭据访问服务器,一切都运行良好。

我创建了一个 AuthZ 授权文件,将我们的开发人员添加到文件中的组中,并授予他们对根目录的写访问权限。我还授予匿名用户对根目录的只读访问权限。

然后我使用以下命令锁定 /svn/ 目录:需要组“CORP\CKAN0BlahBlah”

这有效地限制了安全组中的新开发人员的只读访问权限,直到他们通过 aAuthZ 配置文件获得访问权限。

现在,我有几个问题:

  1. 防止用户对任何“标签”目录更改更改的正确方法(荣誉系统除外)是什么?

  2. 是否可以使用SSPI将组成员传递给AUTHZ,而不是在配置文件中单独列出成员?

有帮助吗?

解决方案 2

为了 问题#1, ,我为此开发了:

@echo off
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe
SET GREP=D:\SVN\Repo\hooks\grep.exe
SET LOG=D:\SVN\Repo Logs.txt

>>"%LOG%" echo ==== commit %1 %2 ====
>>"%LOG%" "%svnlook%" changed -t %2 %1

("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1)
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1)

exit 0

抓住了 grep 工具 http://sourceforge.net/projects/unxutils


为了 问题2, ,答案是否定的,您无法检查 AuthZ 配置文件中的 AD 安全组。

谢谢大家的帮助。

其他提示

1 - 您可以使用预提交挂钩来防止提交,请参阅 SVN 预提交挂钩,用于避免更改标签子目录.

编辑: 要在 Windows 上执行此操作,请尝试以下操作:

将其保存为存储库的 hooks 文件夹中名为 pre-commit.bat 的文件:

@echo off
set REPOSITORY=%1
echo %REPOSITORY% | find /I "tags"
if errorlevel 1 goto done
echo You tried to commit to %REPOSITORY% >&2
echo Committing to tags is not allowed >&2
exit 1
:done

请注意,这将阻止提交到包含子字符串的任何存储库路径 标签. 。根据您的需要进行修改。

没有“正确”的方法。标签是一种约定,开发人员应该学习并遵循它。除此之外,可以使用 Subversion 挂钩来实现故障保护。看 页面上有一个很好的教程。

在我看来,这是一个教育和过程的问题。如果您的开发人员了解 SVN 标签的用途,那么人们(故意)对标签进行提交的可能性似乎就会小得多。我发现有效沟通这些流程不可或缺的是最新的书面文档。我的团队使用 wiki 来存储有关我们流程的文档(具体来说,我们使用 媒体维基)。与在共享点中存储版本化的 MS Office 文档之类的方法相比,wiki 方法似乎使事情更容易访问并且更容易保持最新状态。

使用 svn-auth 文件来定义它怎么样?这看起来像这样:

[groups]
ADMINS=<your ID>
<rest of groups>=<all other IDs>

[/]
* = r
<rest of groups> = rw
@ADMINS = rw

[/tags]
<rest of groups> = r

这将允许 ADMINS 对标签目录进行读写访问,但其他人则不允许。我不知道 SSPI auth 插件,所以也许我提供的示例在您的上下文中不起作用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top