Черепаха 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 также может работать