PDA

Показать полную графическую версию : [решено] Debug процесс


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


Нужна ваша помошь в след:
- Нужно комментарии к каждой строчке,для понимание синтаксиса.
- И как мне дебажить этот скрипт?Как и куда можно вывыодить значение переменной и все что вообще происходит при запуске этого сктрпта
Очень надо буду очень благодарен!!!!

Iska
05-12-2012, 16:47
nbafree, не пробовали спросить там, где брали этот пакетный файл?

nbafree
05-12-2012, 17:17
К сожалению это невозможно.Это хук выполняемый на сервере SVN.При попытка разлочить файл.Я просто не знаю как можно отдебажить его увидь в чем ошибка.

nbafree
14-01-2013, 16:46
Вообще как можно дебажить скрипты?

Iska
15-01-2013, 18:34
Лучший метод — «rem @echo off» + «echo …» и «pause» в потребных местах.




© OSzone.net 2001-2012