SVN Pre-commit Hook FTP Загрузить в Windows - PullRequest
0 голосов
/ 02 декабря 2010

У меня работает репозиторий SVN на компьютере с Windows.Мне нужен скрипт, который будет загружать любой зафиксированный файл на удаленный веб-сервер.Я прочитал о хуках перед фиксацией, но я не знаю, как на самом деле написать скрипт, или даже на каком языке он должен быть написан. Похоже, что скрипт должен быть .bat или .exe для запускав Windows.

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

Если вы сделали это раньше, пожалуйста, объясните весь процесс новичку.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

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

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

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


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

Лучшая идея - использовать систему непрерывной сборки, такую ​​как Hudson . Хадсон будет наблюдать за вашим хранилищем Subversion и может выполнять задание FTP, которое вы хотите, каждый раз, когда пользователь делает коммит. С Hudson вы не связываете разработчика, поскольку он ожидает завершения ловушки, и у вас есть полный журнал того, что происходило с каждым коммитом.

Фактически, каждый сайт должен использовать сервер непрерывной сборки. Даже если вы не скомпилируете код, вы все равно хотите запускать тесты для каждого коммита.

У Hudson даже есть плагины FTP и SFTP, которые могут облегчить вашу задачу. Кроме того, вы можете вызывать сценарии до и после сборки в Hudson, чтобы иметь возможность делать практически все, что душе угодно.

Hudson работает на серверах Windows и Unix. Это процесс Java.


Если вы работаете в Windows, и у вас нет PowerShell , вам нужно скачать какой-нибудь язык сценариев, который вы используете, и использовать его для написания своих хуков. Стандартный язык программирования batch в процессоре Windows command.exe не очень гибкий и мощный. Поскольку перехваты запускаются на сервере, вам нужно только беспокоиться о том, работают ли перехваты на одном компьютере. Некоторые программы используют хуки на стороне клиента, и если вы пишете хук, он должен быть способен работать на каждой отдельной системе, которую может использовать клиент.

1 голос
/ 02 декабря 2010

Я думаю, вам нужен хук после фиксации.

Хук svn действительно может быть любым исполняемым файлом или файлом сценария. Посмотрите здесь для некоторых образцов

Вы можете использовать встроенный FTP-клиент командной строки в Windows. Один из способов - поместить ваши команды FTP в текстовый файл, который вы можете сгенерировать из командного файла. Пример:

echo [username]>ftp.txt
echo [password]>>ftp.txt
echo put [filename]>>ftp.txt
echo quit>>ftp.txt

ftp -s:ftp.txt [server]

Конечно, вы также можете написать программу для этого (например, в .Net, используя класс FtpWebRequest ), это не обязательно должен быть пакетный скрипт.

...