Черепаха SVN / Subversion push-обновления для Windows 2008 Server

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

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

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

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

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

2 ответа

Примечание

Windows-бокс может иметь SSH

Советы

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

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

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

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

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

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

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

ЦВН Крюк (легко выполнимо, чем сервер)

  • Полная синхронизация
    • Создать 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

к которому мы добавим / и удалим эту подстроку из начального имени файла /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

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

  • Perl-скрипт (извините, Perl) Svn Ftp Deploy может выполнить работу по развертыванию за вас

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

Другие вопросы по тегам