You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SVN pre-revprop-change钩子如何配置仅允许提交者或管理员修改日志

问题成因
  • 批处理set语句语法错误:你写的set admin = muellerp中等号两侧的空格会被识别为变量名和变量值的一部分,实际生成的变量名是admin (末尾带空格),变量值是 muellerp(开头带空格),调用%admin%时无法匹配到正确的变量,返回空值,导致管理员身份判断永远不成立。
  • 字符串比较引号不统一:你测试写死管理员账号的代码中,左侧变量用单引号包裹,右侧固定值用双引号包裹,批处理字符串比较会将引号本身纳入比较范围,两侧引号类型不一致必然导致匹配失败。
  • 部分写法存在隐性空格问题:如果校验逻辑中%user%变量前后存在多余空格,也会导致匹配失败。
修复方案

修正后的核心代码如下:

:: 等号两侧不要留空格,避免变量名/值带多余空格
set admin=muellerp
set AUTHOR=
for /f "delims=" %%a in ('svnlook author -r %REV% %REPOS%') do @set AUTHOR=%%a
:: 字符串比较两侧统一用单引号,逻辑保持不变:不是作者也不是管理员就跳转错误
if /I not '%AUTHOR%'=='%user%' if /I not '%user%'=='%admin%' goto ERROR_WRONGUSER

如果需要兼容变量值内部存在空格的场景,可以将比较符两侧统一改用双引号包裹:

if /I not "%AUTHOR%"=="%user%" if /I not "%user%"=="%admin%" goto ERROR_WRONGUSER

单独验证管理员身份的正确写法:

set admin=muellerp
if /I not '%user%'=='%admin%' goto ERROR_WRONGUSER

内容的提问来源于stack exchange,提问作者phil9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:54:03