有没有办法创建一个无法访问日志的 SVN 用户?

Posted

技术标签:

【中文标题】有没有办法创建一个无法访问日志的 SVN 用户?【英文标题】:Is there a way to create an SVN user with no access to log? 【发布时间】:2012-03-28 16:00:06 【问题描述】:

我正在考虑外包一些开发工作,并希望分发 SVN 凭据,而不是授予对我使用的服务器的访问权限。

但是,我对此有点不舒服,想知道是否可以阻止特定用户运行 svn log 并查看文件历史记录。

他们真正需要的是cocidiff

【问题讨论】:

我不会这么认为,但这是一个有趣的问题!一种解决方法可能是从没有历史记录的导出中创建一个新的存储库,并让他们使用它——除了我想不出一种简单的方法来将他们的个人提交合并回你的提交,或者与你自己做的工作合并与此同时 - 或者甚至是你的一个新分支,并打破“复制自”元数据,这样 SVN 就不会认为它背后有任何历史记录。 【参考方案1】:

简答

没有。

长答案

所有标准方法都工作或在更高级别,而不是单个 SVN 命令(共同操作 读/写权限),或在较低级别(使用单独的 DAV 命令, 翻译成单个 svn 命令)

khmarbaise 有一个小姐

想法和考虑

如果您可以构建 DAV-SVN 命令映射(使用 Apache 日志和手动)并验证,在 DAV 层启用和禁止的 svn-commands 在 DAV 端没有交叉点,您只禁用“坏”dav-命令。但我认为,它们都有交叉点(未测试!)。

另一方面,如果您只想从某个点限制对旧历史的访问(不完全禁用命令,我盲目地认为这是不可能的),您可以将外包商的工作区拆分为单独的树,使用基于路径的访问控制。

khmarbaise 有两个小姐

因为他只记得大约 1) 单独的 2) 不相关的存储库,而您至少有 2 个选择:

从 HEAD 在同一个 repo 中创建分支,仅授予用户访问该分支的权限 为用户创建(从导出的 HEAD)附加存储库,将其链接到带有外部的主存储库。

在这两种解决方案中,用户的日志将在其空间中的第一个修订版时停止(由于缺少旧修订版或在复制之前缺少对历史记录的访问权限),通过使用合并,具有足够访问级别的用户仍然可以进行双向同步。

【讨论】:

这种方法的问题在于,其他一些命令也需要访问历史记录(特别是合并)......此外,在 DAV 级别上执行此操作的设置配置起来更加复杂。另一点是您不知道 OP 是否通过 http 工作...使用 svn 级别这将不起作用。基于路径的授权将适用于 http(s) 和 svn 协议! 此外,责备别人真是太好了。【参考方案2】:

基于创建path-based-authorization 的可能性,您可以限制对存储库特定区域的访问,这意味着并非所有历史记录都只能在您授予访问权限的路径中读取。我觉得应该没问题。否则你真的需要做一个副本,并且必须在存储库之间复制更改,这在 SVN 中不是一件简单的工作。

【讨论】:

以上是关于有没有办法创建一个无法访问日志的 SVN 用户?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在服务提供商启动方法(无状态 api 模式)中访问当前(登录)用户?

SVN:无法连接主机“localhost”:由于目标机器积极拒绝,无法连接

允许用户修改Subversion日志的钩子脚本 (linux)

linux系统下搭建svn(apache2.2.24,svn1.6.21),权限和密码文件配置好后,服务器本机访问,无验证框。

svn权限设置

SVN使用技巧:[2]SVN用户权限设置