致力于SVN保护的存储库

时间:2009-07-29 11:36:39

标签: svn permissions tortoisesvn delete-file

我使用windows安全性来阻止用户从SVN客户端上的服务器中删除文件的选项。 (右键单击存储库目录和安全选项)。

现在我想将本地目录提交回服务器,但是我从dir中删除了一个文件。 我收到错误消息说我无权删除。

还有其他方法可以绕过这个吗?

2 个答案:

答案 0 :(得分:2)

你为什么要这样做?首先,存储库(服务器端)的安全权限实际上与客户端的访问权限无关。

现在你应该问问自己是否真的想要删除删除。在svn中,一切都可以在任何时候撤消。当您提交删除时,svn不会物理删除任何内容,它只会记录“在此存储库的修订版x中,文件被删除”之类的内容。后续的结帐/更新显然不会再检出该文件,但可以轻松撤消删除(请参阅svn revert)。

如果您仍然确信需要阻止用户提交删除操作,则应编写pre-commit hook script,您可以使用svnlook工具检查正在提交的事务。如果钩子脚本包含删除,则使用非零值退出。

答案 1 :(得分:1)

使用tortoisesvn repo浏览器删除文件不会导致从包含存储库的Windows目录中删除任何现有文件。实际上它添加了2个文件 - 删除文件的记录和与该记录相关的注释(好的,我简化了)。

但是,在存储库中进行任何更改需要服务器能够从包含存储库的Windows目录中删除文件。更改首先记录在新的事务文件中,然后根据事务修改存储库,然后事务文件已删除。即使您只是更改文件中的注释,每次更改都会发生这种情况。防止存储库目录中的正常文件操作将破坏存储库。

使用togoise svn删除文件,签出工作副本,删除文件和提交结果之间没有功能差异。所有必需的权限和结构更改都是相同的。所有相同的钩子都以相同的顺序被触发,并且它们获得相同的信息。两者都记录了一个修订版,说明该文件已被删除,并且在两种情况下都可以恢复该修订版。你不能分开活动。如果你阻止另一个,你就会阻止另一个。