SVN:仅由作者或管理员更改日志消息
SVN: Change log message only by author or admin
我的 pre-revprop-change 有问题。我想允许更改日志消息,但仅限于作者本人或一组管理员。
我编辑的代码是这个:
我已经编辑了这部分,但它不能正常工作:
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%'goto ERROR_WRONGUSER
一切正常,但管理员无法进行更改。
我也试过只写
if /I not '%user%'=='%admin%' goto ERROR_WRONGUSER
但随后它无法正常工作,它在 ERROR_WRONGUSER 中打印出消息。我也试过
if /I not '%user%'=="muellerp" goto ERROR_WRONGUSER
即使这不起作用,我也检查过 %user% 的输出与名称完全相同,所以实际上它不应该跳转到 ERROR_WRONGUSER。
谁能帮帮我,我很困惑。
set admin = muellerp
语法不正确。
它应该是 set "admin=muellerp"
,否则你创建一个名称为 admin<space>
且内容为 <space>muellerp
的变量
可以通过一个小的改进来使用管理员列表,例如:
set "admin_list=,mueller,schmidt,schulte,schmidtmeier,"
if "!admin_list!" == "!admin_list:,%user%,=,###,!" echo Not an admin
如果两边相等,则 IF 条件为真。
但如果用户存在于列表中,则右侧部分会有所不同。
示例:
user=schmidt
然后 !admin_list:,schmidt,=,###,!
结果为 ,mueller,###,schulte,schmidtmeier,
那么完整的代码是这样的
@echo off
setlocal EnableDelayedExpansion
set "admin_list=,muellera,zernacka,"
set "AUTHOR="
for /f "delims=" %%a in ('svnlook author -r %REV% %REPOS%') do set "AUTHOR=%%a"
if /I not "!AUTHOR!" == "!user!" goto :user_accepted
if not "!admin_list!" == "!admin_list:,%user%,=,###,!" goto :user_accepted
echo "!user!" is not accepted
exit /b 1
:user_accepted
我的 pre-revprop-change 有问题。我想允许更改日志消息,但仅限于作者本人或一组管理员。 我编辑的代码是这个:
我已经编辑了这部分,但它不能正常工作:
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%'goto ERROR_WRONGUSER
一切正常,但管理员无法进行更改。 我也试过只写
if /I not '%user%'=='%admin%' goto ERROR_WRONGUSER
但随后它无法正常工作,它在 ERROR_WRONGUSER 中打印出消息。我也试过
if /I not '%user%'=="muellerp" goto ERROR_WRONGUSER
即使这不起作用,我也检查过 %user% 的输出与名称完全相同,所以实际上它不应该跳转到 ERROR_WRONGUSER。
谁能帮帮我,我很困惑。
set admin = muellerp
语法不正确。
它应该是 set "admin=muellerp"
,否则你创建一个名称为 admin<space>
且内容为 <space>muellerp
可以通过一个小的改进来使用管理员列表,例如:
set "admin_list=,mueller,schmidt,schulte,schmidtmeier,"
if "!admin_list!" == "!admin_list:,%user%,=,###,!" echo Not an admin
如果两边相等,则 IF 条件为真。
但如果用户存在于列表中,则右侧部分会有所不同。
示例:
user=schmidt
然后 !admin_list:,schmidt,=,###,!
结果为 ,mueller,###,schulte,schmidtmeier,
那么完整的代码是这样的
@echo off
setlocal EnableDelayedExpansion
set "admin_list=,muellera,zernacka,"
set "AUTHOR="
for /f "delims=" %%a in ('svnlook author -r %REV% %REPOS%') do set "AUTHOR=%%a"
if /I not "!AUTHOR!" == "!user!" goto :user_accepted
if not "!admin_list!" == "!admin_list:,%user%,=,###,!" goto :user_accepted
echo "!user!" is not accepted
exit /b 1
:user_accepted