Инструмент собирает единый отчёт по изменениям проекта за период:
- берёт задачи и журналы из Redmine;
- тянет коммиты из GitHub;
- если к GitHub нет доступа, умно падает обратно на коммиты, которые ваш GitHub Action заранее публикует в Redmine как заметки (notes);
- позволяет интерактивно отфильтровать авторов коммитов GitHub;
- сохраняет итог в Markdown (или txt).
Подойдёт для еженедельных/спринтовых дайджестов, релиз-нот, сводок по инициативам.
- Ранний и надёжный импорт
.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По умолчанию скрипт работает в режиме 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 или отправки менеджерам.