当用户使用 TortoiseSVN 和 RapidSVN 时,他会看到服务器上的文件,因此可以删除它们。我想阻止这种情况。也许阻止删除选项?
澄清一下,我希望从服务器中删除文件的唯一方法是用户将其从本地驱动器中删除,然后将其提交到服务器。我想限制任何用户直接从服务器中删除的能力。
当用户使用 TortoiseSVN 和 RapidSVN 时,他会看到服务器上的文件,因此可以删除它们。我想阻止这种情况。也许阻止删除选项?
澄清一下,我希望从服务器中删除文件的唯一方法是用户将其从本地驱动器中删除,然后将其提交到服务器。我想限制任何用户直接从服务器中删除的能力。
一如既往,试图在客户端阻止任何事情本质上是不安全的。您的用户总是可以使用不同的客户端。
因此,您需要管理服务器端(存储库本身)的访问权限。不幸的是,据我所知,SVN 本身只支持“读”和“写”访问级别。授予某人“写”权限意味着用户不仅可以修改现有文件,还可以添加新文件和删除现有文件。
您也许可以通过预提交挂钩添加此功能。
通过添加预提交挂钩来防止删除。在 Windows 中,这可以通过在“Your_SVN_repository\hooks\”中添加“pre-commit.bat”来完成,内容如下。
@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