Git + Doxygen + progect version
В svn есть возможность при коммите подменять ключевые слова $Log$, $Date$, $Author$ на соответствующие значения текущего коммита. Во многих случаях использование этого функционала очень удобно. К сожалению, git реализация подобного функционала связана с некоторыми сложностями. Поэтому возникла идея написания скрипта, который перед заливкой файлов git-проекта на хостинг произведёт замены ключевых слов на соответствующие значения. Например:
\author \date \version
после обработки становились:
\author A.Yancharuk \date 05.01.2012 09:15:05 \version v.1.003RC1
Так же было бы удобно чтобы в коде определённой переменной присваивалось значение текущей версии проекта. Например, для PHP:
// Current progect version $progect_version = "";
после обработки скриптом:
// Current progect version $progect_version = "v.1.003RC1";
Так же было бы здорово не ограничивать функционал скрипта только PHP. Чтобы подобную замену легко можно было использовать и в С, С++, shell и т.д.
Результат можно скачать по ссылке.
Изначально можно запустить скрипт с ключом all. В этом случае будут обработаны все файлы проекта которые содержат шаблоны замены. В дальнейшем, при запуске скрипта без ключа, замена будет производиться только в файлах текущего коммита:
git_keywords.sh all # Обработка всех файлов проекта git_kyewords.sh # Обработка файлов предыдущего коммита
Пример использования скрипта:
# Делаем коммит git commit -ae # Используем тег для обозначения версии проекта git tag -a v.1.32 # Замена всех ключевых слов в файлах предыдущего коммита git_keywords.sh # Удаляем старую и генерим новую документацию по проекту rm -rf ~/documentation && doxygen ~/doxygen.progect.cfg # Заливаем новую версию проекта на хостинг rsync -avr -e "ssh" /home/user/www/* user@host:/home/user/www/ # Откатываем все изменения произведённые скриптом git reset --hard HEAD
Несколько предусловий для корректной работы скрипта:
- Пользователь, от имени которого запускается скрипт, должен иметь 'Full name'.
- В файлах проекта должны присутствовать следующие шаблоны: '\date', '\author', '\version', 'precommit_version = ' (без "'" символов).
- Шаблоны замены должны располагаться в конце строки т.к. замена будет произведена от совпадения до EOL.
- Перед использованием скрипта нужно убедиться, что в проекте используются git tags. Номер версии берётся именно из тегов.
- Скрипт должен запускаться в корневой директории проекта. Запуск из других папок не предусмотрен.
- При необходимости нужно добавить расширения файлов, в которых будет вести поиск соответствий. По-умолчанию проверяются файлы: *.c *.cpp *.h *.hpp *.php *.inc *.zx