В последней компании, в которой я работал, мы использовали для развертывания пакетный файл rSync, чтобы выгрузить только изменения с момента последней загрузки. Прелесть rSync в том, что вы можете добавлять списки исключений для исключения определенных файлов или шаблонов имен файлов. Так что исключить все наши файлы .cs, файлы решений и проектов очень легко, например.
Мы использовали TortoiseSVN для контроля версий, и поэтому было приятно иметь возможность писать в нескольких командах SVN для выполнения следующего:
- Прежде всего, убедитесь, что у пользователя установлена последняя версия. Если нет, попросите их обновить или сразу же запустите обновление.
- Загрузите текстовый файл с сервера «synclog.txt», в котором подробно описано, кем является пользователь SVN, какой номер редакции он загружает, а также дату и время загрузки. Добавьте новую строку для текущей загрузки, а затем отправьте ее обратно на сервер вместе с измененными файлами. Это позволяет очень легко определить, к какой версии сайта нужно вернуться, если существует вероятность, что загрузка вызовет проблемы.
В дополнение к этому есть второй пакетный файл, который просто проверяет различия файлов на работающем сервере. Это может выделить общую проблему, когда кто-то загружает, но не фиксирует свои изменения в SVN. В сочетании с журналом синхронизации, упомянутым выше, мы можем выяснить, кто является вероятным виновником, и попросить их совершить свою работу.
И, наконец, rSync позволяет сделать резервную копию файлов, которые были заменены во время загрузки. Мы перенесли их в папку для резервных копий. Поэтому, если вы вдруг поняли, что некоторые файлы не должны были быть перезаписаны, вы можете найти последнюю версию резервной копии каждого файла в этой папке.
Хотя решение было немного неуклюжим в то время, когда я с тех пор стал гораздо больше ценить его при работе в средах, где метод загрузки менее элегантен или прост (удаленный рабочий стол, копирование и вставка всего сайта, например).