0

I used windows security to block to users the option of deleting files from the server on SVN clients. (right-click on the repository dir, and security options).

Now I want to commit a local directory back to the server, but I deleted one file from the dir. I get an error says I don't have permission to delete.

Is there any other way to bypass this?

4

2 回答 2

2

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

现在您应该问自己是否真的要捕获删除。在 svn 中,任何事情都可以随时撤消。当您提交删除时,svn 不会实际删除任何内容,它只会记录类似“在此存储库的修订 x 中,文件 y 被删除”之类的内容。随后的签出/更新显然不会再签出该文件,但可以轻松撤消删除(请参阅svn revert)。

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

于 2009-07-29T12:40:05.663 回答
1

使用 tortoisesvn repo 浏览器删除文件不会导致任何现有文件从包含存储库的 windows 目录中删除。事实上,它添加了 2 个文件——文件被删除的记录和与该记录关联的评论(好的,我简化了)。

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

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

于 2009-07-30T08:11:27.500 回答