2010-06-23 6 views
1

Я запускаю VisualSVN на сервере Windows.Визуальный захват VisualSVN с командным файлом

Я пытаюсь добавить крюк после фиксации, чтобы обновить наш проект постановки всякий раз, когда происходит фиксация.

В VisualSVN, если я нахожу команду в диалоговом окне hook/post-commit, все отлично работает.

Однако, если я делаю командный файл с той же самой командой, я получаю сообщение об ошибке, которое говорит, что ошибка после фиксации не удалась. Дополнительной информации нет.

Моя команда использует абсолютные пути.

Я попытался помещать командный файл в каталог VisualSVN/bin, там я получаю ту же ошибку.

Я убедился, что VisualSVN имеет разрешения для каталогов, где находится командный файл.

Единственное, что я могу придумать, это я не называю это правильно из VisualSVN. Я просто заменяю команду svn update в диалоговом окне hook/post-commit с именем командного файла («c: \ VisualSVN \ bin \ my-batch-file.bat») Я пробовал его с и без пути (без пути он не находит файл вообще).

Нужно ли использовать другой синтаксис в диалоговом окне SVNCommit для вызова командного файла? Что происходит внутри командного файла (он просто имеет мою команду обновления svn. Он работает, если я запускаю командный файл из командной строки.)

В конечном итоге я хочу использовать командный файл, потому что хочу сделать еще несколько вещей после совершения.

ответ

0

Вы пытались выполнить командный файл с помощью команды «вызов»? Я имею в виду:

call C:\Script\myscript.bat 
+0

Да, я пробовал это. Тот же вопрос. – BDW

+0

Затем попробуйте добавить «exit 0» в конец скрипта. –

+0

У меня есть пакетный скрипт с двумя командами, вызывающий svn cleanup C: \ algit \ web2py \ applications/iRazporedDemo вызов svn update C: \ algit \ web2py \ applications/iRazporedDemo, если я запускаю их на сервере из cmd, он работает нормально, когда я запустите мое обновление svn от черепахи. Я получаю сообщение об ошибке после коммита. Ошибка. Код выхода. 0 попытка написать readonly. db. – Yebach

0

Я пытался сделать то же самое и обнаружил, что вы также должны иметь скрипт в папке с крючками .. файл bat, который есть.

1

При использовании VisualSVN> Выберите «Репо»> «Свойства»> «Крючки»> «Захват после фиксации». Где код я использую для отправки Email затем запустить сценарий, который имеет команды, которые я хочу, чтобы настроить

"%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe"^
    commit-notification "%1" -r %2^
    --from [email protected] --to "[email protected]"^
    --smtp-server mail.domainname.com^
    --no-diffs^
    --detailed-subject 
    --no-html 

set PWSH=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe 
%PWSH% -command $input ^| C:\ServerScripts\SVNScripts\post-commit-wp.ps1 %1 %2 
if errorlevel 1 exit %errorlevel% 

Файл сценария находится на C: \ ServerScripts \ SVNScripts \ после фиксации-сор. PS1 и я передать в двух переменных VisualSVN как% 1% и 2

  • % 1 = serverpathwithrep
  • % 2 = номер ревизии

Файл сценария написан в Windows PowerShell

# PATH TO SVN.EXE 
$svn = "C:\Program Files\VisualSVN Server\bin\svn.exe" 
$pathtowebistesWP = "c:\websites-wp\" 

# STORE HOOK ARGUMENTS INTO FRIENDLY NAMES 
$serverpathwithrep = $args[0] 
$revision = $args[1] 

# GET DIR NAME ONLY FROM REPO-PATH STRING 
# EXAMPLE: C:\REPOSITORIES\DEVHOOKTEST 
# RETURNS 'DEVHOOKTEST' 
$dirname = ($serverpathwithrep -split '\\')[-1] 

# Combine ServerPath with Dir name 
$exportpath = -join($pathtowebistesWP, $dirname); 

# BUILD URL TO REPOSITORY 
$urepos = $serverpathwithrep -replace "\\", "/" 
$url = "file:///$urepos/" 


# -------------------------------- 
# SOME TESTING SCRIPTS 
# -------------------------------- 

# STRING BUILDER PATH + DIRNAME 
$name = -join($pathtowebistesWP, "testscript.txt"); 
# CREATE FILE ON SERVER 
New-Item $name -ItemType file 
# APPEND TEXT TO FILE 
Add-Content $name $pathtowebistesWP 
Add-Content $name $exportpath 

# -------------------------------- 


# DO EXPORT REPOSITORY REVISION $REVISION TO THE ExportPath 
&"$svn" export -r $revision --force "$url" $exportpath 

Я добавил комментарии, чтобы объяснить каждую строку и что она делает.В двух словах, сценарий:

  • Возвращает все параметры
  • Построить локальный путь Dir
  • пробеги SVN экспорт
  • Место файлы на веб-сайт/опубликовать каталог.

Его простой способ развернуть ваш новый код на веб-сайт.