Использование git для отслеживания изменений в проекте позволяет участникам добавлять комментарии к каждой фиксации. Если руководящие принципы проекта и контроль менеджеров ограничивают эти комментарии форматом, полезным для включения в документацию проекта — историю, журнал изменений или руководство пользователя, в зависимости от случая, было бы неплохо сделать ссылку на комментарии коммита, а не перепечатайте или скопируйте/вставьте их в соответствующие документы. Как создавать и поддерживать эти ссылки, а также выбирать, какие из них включать в какие потоки документации (т. е.: руководство пользователя, история, спецификации, руководство по обслуживанию и т. д.)?
Здесь следует отметить, что, хотя git известен разработкой программного обеспечения, он не ограничивается этим. Это одинаково полезно для любой системы, где нескольким участникам необходимо координировать и отслеживать свои усилия. Такие альтернативы включают бизнес-презентацию, разработанную командой, учебник с несколькими авторами и исследовательский проект — как сбор данных, так и отчеты.
Репозиторий git всегда доступен локально, но не всегда в Интернете (например, на GitHub). Таким образом, метод, основанный на API, разработанном для конкретного веб-узла, вероятно, непригоден для использования. Хотя в этих API есть некоторые богатые возможности.
Сама документация может быть в git, и часто ее части будут, хотя это и не гарантия. Только комментарии коммитов git гарантированно находятся в git, где бы они ни размещались. Части документов в git находятся в уценке, как бы они ни создавались. В большинстве случаев основная часть написания документа выполняется в графическом текстовом процессоре (MS Word, LibreOffice Writer и т. д.) и может быть сохранена в формате XML или RTF, хотя предпочтение отдается формату DocBook XML.
Инструмент для использования может быть изменен, эта возможность будет частью процесса принятия решений. Выходные форматы в основном PDF и HTML, хотя уценка также иногда полезна. Сами комментарии фиксации либо преобразуются в основную часть документации в виде абзаца или аннотации, либо сохраняются как есть (необработанный текст) для информационного пузыря или сноски, в зависимости от целевого документа и целей проекта.
Основная цель состоит в том, чтобы инструмент «втягивал» комментарии в документацию динамически по предпочтениям, а не перепечатывал их вручную или копировал/вставлял из git в исходный код документации.
Я не уверен, что смогу предоставить полное решение для этого, поскольку рабочий процесс, похоже, имеет так много переменных. Если вам нужно просто получить комментарий без копирования или вставки, вы можете использовать что-то похожее на следующую команду Unix:
$ git log --format=%B -n 1 <sha-1> > filename.txt
Это дает вам комментарий для указанной фиксации SHA-1 и перенаправляет его в файл. Пока у вас есть значение SHA-1, вы сможете обернуть его на свой любимый язык и настроить для динамической вставки вывода там, где это необходимо.
Универсальным идентификатором каждого коммита является его SHA1 — 40-значное шестнадцатеричное число, подобное этому:
3e0b5fb09d70d0457d7e5ae7892504f6e1b45f33
Этот коммит взят из репозитория конструктора документации Sphinx. В комментарии говорится:
Merge pull request #4556 from tk0miya/4543_autodoc_test_fails_with_py353
Fix #4543: test for autodoc fails with python 3.5.3
Разумный способ сделать постоянную ссылку на коммит — сохранить его SHA1 и использовать его для доступа к коммиту через различные интерфейсы — см. примеры ниже.
Скажем, вы программируете систему, которая создает документацию. Вы хотите программно получить сообщение коммита и добавить его в журнал изменений.
Первый вариант — когда код имеет доступ файловой системы к репозиторию.
$ git show -s --format=%B 3e0b5fb09d70d0457d7e5ae7892504f6e1b45f33
Merge pull request #4556 from tk0miya/4543_autodoc_test_fails_with_py353
Fix #4543: test for autodoc fails with python 3.5.3
Существуют различные --format
варианты получения необходимых сведений о коммите.
Вы также можете использовать SHA1 для получения сведений о коммите из удаленного репозитория. Скажем, у вас есть самостоятельная установка GitLab, и вы хотели бы получать сообщение коммита через GitLab API . Вот как может выглядеть запрос GET:
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" \
"https://gitlab.example.com/api/v4/projects/5/sphinx/commits/3e0b5fb09d70d0457d7e5ae7892504f6e1b45f33"
Ответ представляет собой JSON с большим количеством деталей коммита.
Если вы хотите автоматически выбирать значимые коммиты, вам нужно какое-то правило или соглашение, чтобы ваша команда отмечала такие коммиты.
Например, многие команды работают с методологиями «поток git» или «поток GitHub/GitLab», в которых работа выполняется в функциональных ветках, а затем объединяется в стабильную ветку. Каждое слияние приводит к фиксации слияния. Если члены вашей команды пишут осмысленные сообщения в коммитах слияния, это хороший источник для журнала изменений.
Чтобы получить сообщения фиксации слияния, используйте git log --merges
. В этом примере мы получаем хэш (SHA1, %H
), дату создания ( %ad
) и сообщение фиксации ( %B
), разделенные символами новой строки ( %n
):
$ git log --format='%H%n%at%n%B' --merges
Вы можете захотеть упаковать вывод в какой-нибудь удобный формат, например JSON:
$ git log --merges --format='{%n "hash": "%H",%n "timestamp": %at,%n "subject": "%s"%n}'
{
"hash":3e0b5fb09d70d0457d7e5ae7892504f6e1b45f33,
"timestamp": 1517848081,
"subject": "Merge pull request #4556 from tk0miya/4543_autodoc_test_fails_with_py353"
}
...
Здесь применяется тот же список --format
опций .
Несколько дней назад я видел сообщение именно об этой идее на слабом канале WtD — я хочу сказать, что этот подход назывался typson + docson, и он напрямую извлекал комментарии в систему документации с места в карьер — обсуждение на базе пользователей, похоже, указывало на то, что это предназначено как внутренняя система документов, ей потребуются небольшие настройки, но этого будет достаточно.
Нашел это в своей истории - надеюсь, это поможет.
ссылка на демонстрационную страницу: http://lbovet.github.io/typson-demo/
ссылка на страницу docson github: https://github.com/lbovet/docson
Git похож на серверную базу данных, а это значит, что может быть и внешний интерфейс. Существует множество интерфейсов, таких как BitBucket. С их помощью вы можете ссылаться на страницы фиксации. Скорее всего, у вашего администратора git или администратора базы данных уже есть внешний интерфейс.
Дэвид Фогель
пользователь 25452
Дэвид Фогель
пользователь 25452
Ник Волынкин
Ник Волынкин
ForEachLoop