2015-11-05 9 views
0

Я знаю, что на этот вопрос уже был задан ответ на SO, но этот ответ был просто для удаления крюка. Мне нужно исправить крючок вместо его удаления.SVN Lock Hook Ошибка: ожидается opaquelocktoken

Мы запускаем VisualSVN Server в Windows 2012 с клиентами Win 7. Мне было поручено отключить кражу блокировок (я знаю, что это не лучшая практика использования SVN, но боссы этого хотят). Вот файл .bat я в настоящее время на месте для нашего предварительного замка крюка (находится на сайте):

@ECHO OFF 
:: Set all parameters. Even though most are not used, in case you want to add 
:: changes that allow, for example, editing of the author or addition of log messages. 
set repository=%1 
set rev_path=%2 
set userName=%3 

:: If a lock exists and is owned by a different person, don't allow it 
:: to be stolen (e.g., with 'svn lock --force ...'). 

FOR /F "delims=: tokens=1*" %%a IN ('svnlook lock "%repository%" "%rev_path%"') DO if %%a==Owner (set LOCK_OWNER=%%b) 

:: If we get no result from svnlook, there's no lock, allow the lock to 
:: happen: 
if "%LOCK_OWNER%"=="" (
exit /b 0 
) 

:: If the person locking matches the lock's owner, allow the lock to 
:: happen: 
if "%LOCK_OWNER%" = " %username%" (
exit /b 0 
) 

:: Otherwise, we've got an owner mismatch, so return failure: 
echo "Error: %rev_path% already locked by %LOCK_OWNER%." >&2 
exit /b 1 

Я также пытался писать приложения, используя SharpSVN (я использовал это, чтобы создать сообщение -commit hook before). И .bat файл и мой SharpSVN сценарий вернуть эту же ошибку:

Lock token URI ' 
C:\Program Files\VisualSVN Server>"C:\Program Files\VisualSVN 
Server\bin\VisualSVNServerHooks.exe" case-insensitive 
-tC:\Repositories\DIT_TEST /go-home.txt Jeremy.Coulson 

C:\Program Files\VisualSVN Server>C:\SVNAdmin\SVNPreLockHook.bat 
C:\Repositories\DIT_TEST /go-home.txt Jeremy.Coulson 
' has bad scheme; expected 'opaquelocktoken' 
If you want to break the lock, use the 'Check For Modifications' dialog or the repository browser. 

Вот настройки в нашем Визуальный сервер SVN:

screen shot from VisualSVN

Я имею в виду, что я должен каким-то образом обеспечить это opaquelocktoken к сценарию крючка, но я не уверен, как это сделать.

ответ

0

Если ваша проблема по-прежнему актуальна, вот мой способ ее избежать.

Основная причина заключается в том, что SVN будет принимать «эхо» как токен блокировки на этапе предварительной блокировки.

Чтобы избежать этого, я пишу предварительные блокировки в файлах vbs (Visual Basic Script), которые должны запускаться из файла hook-lock pre-lock.bat.

Предварительно lock.bat файл, запустить сценарий, как это

@echo off 
Wscript somescript.vbs %1 %2 %3 %4 %5 
@echo on 

Пожалуйста, обратите внимание, что вы имеют использовать «Wscript», а не «Cscript»

Когда есть необходимо использовать результат сценария в качестве выходящего состояния, затем

@echo off 
FOR /F "usebackq tokens=*" %%r in (`Cscript %1\hooks\somescript.vbs %1 %2 %3 %4 %5`) DO set res=%%r 
@echo on 
@exit %res% 

в VBS способ передать значение обратно в BAT-файл: Wscript.Echo some_value

 Смежные вопросы

  • Нет связанных вопросов^_^