Существует ли инструмент, который автоматически обновляет метаданные в исходных файлах? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть репозиторий git, включающий около ста файлов .cpp и .h. Каждый файл имеет короткий заголовок, включая данные о лицензии. Я хотел бы расширить эту часть несколькими строками метаданных, чтобы показать дату, когда конкретный файл был создан и изменен в последний раз.

Существуют ли передовые практики для автоматического управления этим без конфликтов с git?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Используйте фильтры git. В Git Book есть пример, который делает именно это. См. https://git -scm.com / book / en / v2 / Customizing-Git-Git-Attributes , начиная с "Еще один интересный пример - расширение $ Date $ ключевого слова, стиль RCS.".

Существует два фильтра: один для фильтрации данных перед добавлением в фиксацию (чистый фильтр) и один для извлечения файла из фиксации в рабочее дерево (фильтр пятен). Получить скрипты и настроить фильтры:

$ git config filter.dater.clean clean_date
$ git config filter.dater.smudge expand_date
0 голосов
/ 28 июня 2018

Это можно сделать с помощью git hook.

Предположим, что все ваши файлы следуют шаблону. E.g.:

/**
 * Some license information
 *
 * Last update: Thu, Jun 28, 2018  8:19:47 PM
 */
// Code comes here...

Создайте исполняемый файл файл .git/hooks/pre-commit с простым сценарием для замены строки «Последнее обновление:»:

#!/bin/sh
d=$(date)
git diff --cached --name-only --diff-filter=ACM | \
    xargs sed -i "s/\* Last update:.*/* Last update: $d/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...