如何冻结整个SVN存储库以使其成为只读

Mar*_*era 32 svn

找不到我确切问题的答案.我们迁移到不同的源控制系统,并希望保留整个存储库的只读快照.没有人应该能够在任何地方进行任何改变.有没有办法做到这一点?

Rom*_*net 32

您可以创建一个钩子来执行此操作:

repository/hooks/pre-commit

#!/bin/sh
echo "No more commit here - this is an archive branch" 1>&2
exit 1
Run Code Online (Sandbox Code Playgroud)

请注意,日志消息必须重定向到/ dev/stderr(这意味着1>&2).

  • 对于阅读@TimMeyer评论的人,请注意不建议使用文件:/// SVN"服务器".请参阅http://svnbook.red-bean.com/en/1.7/svn.serverconfig.choosing.html以供参考:_不要被所有用户直接通过file://访问存储库的简单想法所诱惑网址.即使存储库通过网络共享随时可供所有人使用,这也是一个坏主意.它删除了用户和存储库之间的任何保护层:用户可能会意外(或故意)破坏存储库数据库,... (3认同)
  • 谢谢,当您不使用自己的SVN服务器而是使用Windows Server上的简单文件夹(例如使用TortoiseSVN的"Create Repository Here"功能创建)时,这尤其有用. (2认同)
  • 这是一个很好的解决方案。可以通过使用 **start-commit** 挂钩来改进。该挂钩比预提交挂钩运行得更早。根据手册:“开始提交挂钩在创建提交事务之前运行。它通常用于决定用户是否具有提交权限。” 和“常见用途:访问控制(例如,由于某种原因暂时锁定提交)”。 (2认同)

Mic*_*ner 28

只需将您的authz文件更新为

# give everyone read-only access to the entire repository
[reponame:/]
* = r
Run Code Online (Sandbox Code Playgroud)

  • 这只有在您使用Apache或svnserve时才有用.例如.我使用svn + ssh,这不适用. (4认同)