У меня есть проект, где я вынужден использовать ftp как средство для развертывания файлов на реальном сервере. Я развиваюсь на Linux, поэтому я взломал сценарий bash, который создает резервную копию содержимого сервера ftp, удаляет все файлы на ftp и загружает все свежие файлы из ртутного хранилища. (и позаботиться о загруженных пользователем файлах и папках, а также о внесении изменений после развертывания и т. Д.)Инкрементное развертывание из сценария оболочки
Это хорошо работает, но проект начинает становиться достаточно большим, чтобы процесс развертывания слишком длительный.
Я хотел бы изменить скрипт, чтобы посмотреть, какие файлы были изменены, и только развернуть измененные файлы. (резервное копирование в порядке, как есть)
Я использую mercurial как VCS, поэтому моя идея - как-то запросить измененные файлы между двумя ревизиями, перебрать измененные файлы, и загрузить каждую измененную файл и удалить каждый удаленный файл.
Я могу использовать hg log -vr rev1:rev2
, и с выхода я могу вырезать измененные файлы с помощью grep/sed/etc.
две проблемы:
Я слышал страшные истории, которые разборе вывод логинсервера приводит к безумию, поэтому я думаю, что то же самое относится и к здесь, если я пытаюсь разобрать вывод hg log
, то переменные будут претерпевать расщепление слов и всевозможные преобразования.
hg log
не сообщает мне, что файл изменен/добавлен/удален. Дифференциация между измененными и удаленными файлами будет наименьшей.
Итак, каков был бы правильный способ сделать это? Я использую yafc как ftp-клиент, если он нужен, но готов переключиться.
rq имеет ваш ответ ниже, используя 'hg status' (not log). Не беспокойтесь о разборе вывода с помощью mercurial - авторы очень осторожны в изменении вывода команд с версии на версию. Это было я, я бы не стал отказываться от собственного инкрементного обновления. Просто отправьте все в новый каталог на сервере и переименуйте новое временное имя поверх старого, видимого в Интернете. –