Назад | Перейти на главную страницу

Tortoise SVN / Subversion отправляет обновления для Windows 2008 Server

Я гуглил как сумасшедший, пытаясь найти решение для этого, но без особого успеха!

У меня есть TortoiseSVN и Subversion, работающие на моем локальном компьютере с Windows XP. Я вношу изменения в свой веб-сайт и фиксирую их локально. Затем я хочу внести эти изменения на действующий веб-сайт. Он размещен на нашем выделенном сервере (Windows 2008 Server).

Я разговаривал с хостинговой компанией, которая подтвердила, что они не поддерживают SVN, и, поскольку это окно Windows, не будет иметь SSH - так что это не вариант.

Есть ли какое-либо программное обеспечение или метод, который я мог бы использовать для отправки только тех изменений, которые я фиксирую, обратно на мой удаленный сервер? Или мне нужно вручную загрузить изменения с помощью FTP (что я и делаю в настоящий момент, что очень неприятно!)

Спасибо за любую информацию!

Я не должен заново изобретать колесо!

  • Perl-скрипт (извините, Perl) Развертывание svn ftp могу выполнить развертывание для вас

  • С минимальной модификацией (чтобы исключить ожидания от требований) svn2web может также работать

Примечание

Окна-бокс жестяная банка есть SSH

Подсказки

Вы надо читать и грок SVN Книга в любом случае, если вы хотите использовать Subversion. Глава 5.3.2 «Реализация ловушек репозитория» рассказывает нам основы о репозиторий (на стороне сервера) хуки (ты можно использовать хуки в вашем репо), позже "Репозиторий" обсуждали более глубоко. Вы увидите после фиксации крючок для вашей задачи

Поскольку вы работаете с TortoiseSVN, вы также можете использовать Перехватчики TortoiseSVN на стороне клиента (они обрабатывают меньший набор событий, потому что работают с Рабочая копия, а не репозиторий), который также может быть после фиксации

В любом случае, для deploy-hook вам нужно написать неинтерактивный (желательно) скрипт (обычный bat-файл, PowerShell, exe ...), который передает / некоторый набор файлов / от вас в конечный пункт назначения и выполняет какое-то другое управление на стороне живого сайта.

На этапе планирования вы должны определить, какой политике развертывания вы хотите (и можете) следовать.

  • Полная синхронизация состояния WC с сайтом (более сложная логика, больше времени на развертывание и, следовательно, больше времени простоя)
  • Только тупая копия измененных файлов (меньше времени простоя, больше предварительной обработки перед развертыванием, некоторые исторические артефакты не очищены, и сайт не может быть полным зеркалом WC)

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

Краткое содержание

TSVN Hook (проще, чем сервер)

  • Полная синхронизация
    • Создать ExportDir
    • Экспорт WC в ExportDir
    • Подключиться к сайту-хосту (FTP, SCP, ...)
    • Отключить сайт (?)
    • Удалить все версионные файлы (не локальные данные) в дереве сайтов
    • Загрузите новое дерево сайтов из ExportDir
    • Включить сайт (?)
    • Disconect
    • Удалить ExportDir
  • Копировать обновления
    • Создать ExportDir
    • Получить список затронутых в последней ревизии (зафиксированных сейчас) файлов с помощью svn log -q -v --limit 1 (+ некоторые приемы для получения полных локальных путей) или с >svn diff --summarize -r PREV:COMMITTED (+ исключить из списка D / удалено / файлы
    • Скопируйте набор файлов в ExportDir
    • Подключиться к сайту-хосту
    • Копировать файлы, перезаписывая старые
    • Отключить
    • Удалить ExportDir

ДОБАВИТЬ

История бюро находок

Я еще не готов использовать рецепт «выгрузить только измененные в Windows» (я ленив и загружаю полностью экспортированный WC, когда это необходимо), но есть идеи.

В этих примерах я использую (часть) моего репо http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/, зарегистрирован в местном каталоге z:\Hello\ с задачей "загрузить измененные в последней фиксации файлы на FTP, используя по возможности чистые Windows-инструменты"

  • Файлы в последней фиксации

    z: \ Hello> svn log -v -q -l 1

    r33 | ленивый барсук | 2012-02-28 16:10:41 +0600 (Вт, 28 фев 2012) Изменены пути: M /trunk/Hello.en.txt

  • Извлечь список затронутых файлов - TBD (grep в крайнем случае)

    /trunk/Hello.en.txt

  • Преобразовать имя файла в локальный путь - TBD

из svn info нас интересуют две строки

URL: http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk
Repository Root: http://mayorat.ursinecorner.ru:8088/svn/Hello

URL - корень репозитория = / trunk

к которому мы добавим / и удалим эту подстроку из начала filename /trunk/Hello.en.txt, Hello.en.txt - это файл в корне z: \ Hello

  • Скопируйте файлы в ExportDir (очевидно)
  • CD ExportDir
  • Скрипт сборки, в котором будет использоваться Windows FTP-клиент ftp (читайте о параметре -s ftp) в команде ftp -s:uploader -i -n ftp-host, что-то вроде

user user pass

cd /our/path

mput *.*

bye

  • пользовательскую команду можно изменить на используя трюк _netrc.

  • Mput, если не работает рекурсивно, будет заменен набором put, cd, lcd, mkdir