четверг, 6 января 2011 г.

Повседневный git. Выгрузка изменений.

При работе с большими проектами часто приходится вносить изменения/доработки порциями, изменяя при этом большое количество файлов. Например, при исправлении багов, файлы на сервер загружаются только после того, как исправлены все ошибки. Для отслеживания измененных файлов проще всего делать коммит после завершения очередного этапа(исправления ошибки или добавления функции), а когда нужно все выгрузить просто получать список файлов при помощи команды:
git diff start_comit_id finish_commit_id
Проблема появляется когда измененных файлов много, да еще и размещены они в разных папках разного уровня вложенности. Приходится вручную ходить по дереву файлов и загружать измененные. Метод не очень удобный и очевидно нуждается в автоматизации.

Для решения проблемы, использую самодельный скрипт, который парсит дерево файлов и копирует их в отдельную папку, сохраняя структуру каталогов. В результате эту папку можно просто загрузить на сервер.
На вход скрипта передается файл со списком измененных файлов и папка в которую их нужно копировать. Файл с изменениями проще всего получить так:
git diff start_comit_id finish_commit_id > changes.log
Ну и супер скрипт:
gitfcopy.py changes.log to_server
P.S. Скрипт прилагается, может пригодится кому-то.

Комментариев нет: