VisualSVN посткоммитный хук с командным файлом - PullRequest
2 голосов
/ 23 июня 2010

Я запускаю VisualSVN на сервере Windows.

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

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

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 17 октября 2017

При использовании VisualSVN> Выберите Repo> Свойства> Хуки> Хук после фиксации.Где код, который я использую для отправки электронной почты и запуска сценария, в котором есть команды, которые я хочу настроить

 "%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe" ^
    commit-notification "%1" -r %2 ^
    --from support@domainname.com --to "support@domainname.com" ^
    --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 \ post-commit-wp.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

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

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

Это простой способ развертывания вашего недавно подтвержденного кода на веб-сайте.

0 голосов
/ 13 марта 2013

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

0 голосов
/ 23 июня 2010

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

call C:\Script\myscript.bat
...