Я гуглил как сумасшедший, пытаясь найти решение для этого, но без особого успеха!
У меня есть 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 ...), который передает / некоторый набор файлов / от вас в конечный пункт назначения и выполняет какое-то другое управление на стороне живого сайта.
На этапе планирования вы должны определить, какой политике развертывания вы хотите (и можете) следовать.
В зависимости от выбранной политики будут отличаться команды подготовки набора файлов к передаче, а также набор операций на сайте.
Краткое содержание
TSVN Hook (проще, чем сервер)
svn log -q -v --limit 1
(+ некоторые приемы для получения полных локальных путей) или с >svn diff --summarize -r PREV:COMMITTED
(+ исключить из списка D / удалено / файлыЯ еще не готов использовать рецепт «выгрузить только измененные в 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
ftp
(читайте о параметре -s ftp) в команде ftp -s:uploader -i -n ftp-host
, что-то вродеuser user pass
cd /our/path
mput *.*
bye
пользовательскую команду можно изменить на используя трюк _netrc.
Mput, если не работает рекурсивно, будет заменен набором put, cd, lcd, mkdir