当用户使用TortoiseSVN和RapidSVN,他看到的文件,因为它们是在服务器上,因而具有删除它们的能力。我想阻止。也许能够阻止用户删除的选项?
为了澄清,我希望有一个文件会从服务器中删除的唯一方法是用户从他的本地驱动器中删除,然后将其提交到服务器。我想限制任何用户直接从服务器上删除的能力。
试图阻止在客户端什么是一如既往,天生就不安全。您的用户总是可以使用不同的客户端。
所以,你需要管理服务器端的访问权限(在库本身)。不幸的是,据我所知,SVN本身只支持“读”和“写”访问级别。给一个人“写”访问意味着用户不仅能够修改现有的文件,而且还添加新文件,并删除现有的。
您可能能够通过一个pre-commit钩子来添加此功能。
防止通过添加缺失pre-commit钩子。在这个窗口可以通过如下添加在“预commit.bat”“Your_SVN_repository \吊钩\”的内容来完成。
@echo off
::
:: Stops commits that have deleted/renamed/moved files/folders.
::
setlocal
rem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2
rem check for an delete command in commit
svnlook changed %REPOS% -t %TXN% | findstr /i /m /b D > nul
if %errorlevel% gtr 0 exit 0 else (goto err)
:err
echo. 1>&2
echo Your commit includes files/folder deleted or renamed from repository 1>&2
echo Deletion/Rename is not allowed from repository>&2
echo Please revert the deletion/rename changes 1>&2
exit 1