RU EN

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

Янчарук А.В.
05.01.2012 10:57


Оставить комментарий


Имя  


Комментарий *