nbafree
05-12-2012, 15:07
Добрый день!
У меня есть скрипт :
set REPOS=%~1
set PATH_IN_REPO=%~2
set REPO_USER="%~3"
set STEAL_LOCK=%~5
set ACCESS_CONF=c:\csvn\data\conf\svn_access_file
set ADMIN_USER_NAME="asup.managers"
if not "%STEAL_LOCK%"=="1" exit 0
rem If a lock is owned by a different person, don't allow it be broken.
rem (Maybe this script could send email to the lock owner?)
set SVNLOOK=c:\csvn\bin\svnlook.exe
set LOCK_OWNER=""
rem The string put in parentheses is passed to cmd /c that is why we need so many doublequotes (see cmd /?)
for /f "tokens=1,2 delims== " %%i in ('""%SVNLOOK%" lock "%REPOS%" "%PATH_IN_REPO%"|findstr /B "Owner: ""') do @set LOCK_OWNER="%%j"
rem If we get no result from svnlook, there's no lock, return success:
if %LOCK_OWNER%=="" exit 0
rem If the person unlocking matches the lock's owner, return success:
if /I %LOCK_OWNER%==%REPO_USER% exit 0
set ADMIN_USER_UNLOCKING=""
rem check if repo user name is one of admins
for /F "delims== tokens=1-2" %%i in (%ACCESS_CONF%) do @call :CheckAdmin %%i "%%j"
if not %ADMIN_USER_UNLOCKING%=="" exit 0
rem Otherwise, we've got an owner mismatch, so return failure:
echo Error: %PATH_IN_REPO% locked by %LOCK_OWNER%.>&2
exit 1
goto :eof
:CheckAdmin
if not "%1"==%ADMIN_USER_NAME% goto :eof
for %%i in (%~2) do @if /I "%%i"==%REPO_USER% set ADMIN_USER_UNLOCKING="1"
goto :eof
Нужна ваша помошь в след:
- Нужно комментарии к каждой строчке,для понимание синтаксиса.
- И как мне дебажить этот скрипт?Как и куда можно вывыодить значение переменной и все что вообще происходит при запуске этого сктрпта
Очень надо буду очень благодарен!!!!
У меня есть скрипт :
set REPOS=%~1
set PATH_IN_REPO=%~2
set REPO_USER="%~3"
set STEAL_LOCK=%~5
set ACCESS_CONF=c:\csvn\data\conf\svn_access_file
set ADMIN_USER_NAME="asup.managers"
if not "%STEAL_LOCK%"=="1" exit 0
rem If a lock is owned by a different person, don't allow it be broken.
rem (Maybe this script could send email to the lock owner?)
set SVNLOOK=c:\csvn\bin\svnlook.exe
set LOCK_OWNER=""
rem The string put in parentheses is passed to cmd /c that is why we need so many doublequotes (see cmd /?)
for /f "tokens=1,2 delims== " %%i in ('""%SVNLOOK%" lock "%REPOS%" "%PATH_IN_REPO%"|findstr /B "Owner: ""') do @set LOCK_OWNER="%%j"
rem If we get no result from svnlook, there's no lock, return success:
if %LOCK_OWNER%=="" exit 0
rem If the person unlocking matches the lock's owner, return success:
if /I %LOCK_OWNER%==%REPO_USER% exit 0
set ADMIN_USER_UNLOCKING=""
rem check if repo user name is one of admins
for /F "delims== tokens=1-2" %%i in (%ACCESS_CONF%) do @call :CheckAdmin %%i "%%j"
if not %ADMIN_USER_UNLOCKING%=="" exit 0
rem Otherwise, we've got an owner mismatch, so return failure:
echo Error: %PATH_IN_REPO% locked by %LOCK_OWNER%.>&2
exit 1
goto :eof
:CheckAdmin
if not "%1"==%ADMIN_USER_NAME% goto :eof
for %%i in (%~2) do @if /I "%%i"==%REPO_USER% set ADMIN_USER_UNLOCKING="1"
goto :eof
Нужна ваша помошь в след:
- Нужно комментарии к каждой строчке,для понимание синтаксиса.
- И как мне дебажить этот скрипт?Как и куда можно вывыодить значение переменной и все что вообще происходит при запуске этого сктрпта
Очень надо буду очень благодарен!!!!