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