Skip to content

BPAIC/gitmine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сводка изменений из Redmine + GitHub (v2)

Инструмент собирает единый отчёт по изменениям проекта за период:

  • берёт задачи и журналы из Redmine;
  • тянет коммиты из GitHub;
  • если к GitHub нет доступа, умно падает обратно на коммиты, которые ваш GitHub Action заранее публикует в Redmine как заметки (notes);
  • позволяет интерактивно отфильтровать авторов коммитов GitHub;
  • сохраняет итог в Markdown (или txt).

Подойдёт для еженедельных/спринтовых дайджестов, релиз-нот, сводок по инициативам.


Что нового в v2

  • Ранний и надёжный импорт .env через python-dotenv с ручным парсером на случай отсутствия пакета.
  • Понятные сообщения для 404 GitHub (опечатка в owner/repo, приватный репозиторий, неверный токен/скоуп).
  • Фолбэк на заметки Redmine с парсингом коммитов из заданного текстового формата.
  • Нормализация авторов GitHub: один человек → одна строка, даже при разных email.
  • Автовыбор всех, если фильтры ничего не дали, чтобы отчёт не оказался пустым.
  • Мелкие улучшения форматирования и устойчивости.

Требования

  • Python 3.9+
  • Доступ к Redmine API (если нужен блок Redmine)
  • Токен GitHub со scope repo (если репозиторий приватный)
  • (Опционально) python-dotenv для автоматической загрузки .env
pip install -r requirements.txt   # если у вас есть такой файл
# либо минимум:
pip install requests python-dotenv

Режимы вывода Redmine

По умолчанию скрипт работает в режиме GitHub-only и блок Redmine не выводится. Переключить поведение можно через параметр --redmine-mode:

  • off — полностью скрыть раздел Redmine (значение по умолчанию);
  • issues-only — показать только список задач без журналов;
  • journals-filtered — вывести журналы задач, отфильтрованные по периоду.

В фильтрованном режиме журналы берутся только за указанный промежуток времени, автокомментарии о коммитах игнорируются, а заметки очищаются от %0A и textile-заголовков.

Человекочитаемый вывод

Для преобразования заметок Redmine в консистентный Markdown-отчёт добавлен скрипт report.py.

Пример:

python report.py notes.txt --owner OOO-Alpha --repo LKAlpha \
    --from 2025-08-01 --to 2025-08-18 --tz Europe/Moscow

Если даты в параметрах --from и --to указаны без смещения, они интерпретируются в зоне, заданной через --tz (по умолчанию UTC). Наивные даты коммитов также автоматически переводятся в эту зону, если в коммите нет информации о часовом поясе.

Основные возможности:

  • нормализация заметок (распаковка %0A, \n, исправление заголовков);
  • автоматическая подстановка ссылок на коммиты при известном репозитории;
  • фильтрация по периоду и исключение merge-коммитов по умолчанию;
  • группировка --group-by repo|author|date;
  • режимы отображения --view compact|detailed с ограничением файлов --max-files.

Отчёт начинается со сводки по количеству задач, коммитов, авторов и репозиториев и пригоден для публикации в Wiki или отправки менеджерам.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages