
Эти легкие флаги инструментов нарушают изменения перед отправкой
11 июня 2025 г.В современных проектах GO это слишком легко для случайных изменений API или тонких редакторов документации, чтобы пройтись через запросы или процессы выпуска незамеченных.
relimpact
это легкий инструмент CLI, который помогает вам понятьЧто действительно изменилосьМежду двумя git refs-с чистыми, структурированными, дружественными к человеку сообщениями.
Используйте его в трубопроводах CI, выпустите PRS или локально перед тем, как пометить новые версии.
✨ Особенности
- 🔍 API Diff- Отслеживание разбитых публичных изменений API (структуры, интерфейсы, функции, константы, переменные).
- 📝 Документы Diff-Раздел «Оценка разметки», чтобы выделить значимые изменения контента.
- 🗂Другие файлы diff- Групповые файлы изменяются по расширению (.sh, .sql, .json и т. Д.) На поверхностные миграции и вспомогательные файлы.
- 🚀 Разработано для выпуска PR -обзоров- Быстро увидеть реальное влияние изменений.
- 🖋Отчеты об Марковде- Готов для вставки в выпуски GitHub, Slack или ChangeLogs.
- ⚙Работает в действиях GitHub, Gitlab CI или локально- интегрируется легко.
- 🔒 Не требуется сервер- чистый инструмент CLI.
🚀 QuickStart
Беги на GitHub PR:
relimpact --old=v1.0.0 --new=HEAD > release-impact.md
Пример вывода:
⚙ Интеграция действий GitHub
name: Release Impact on PR
on:
pull_request:
branches: [ master ]
types: [ opened, synchronize, reopened ]
jobs:
release-impact:
name: Generate Release Impact Report
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine previous tag
id: prevtag
run: |
git fetch --tags
TAG_LIST=$(git tag --sort=-version:refname)
PREV_TAG=$(echo "$TAG_LIST" | head -n2 | tail -n1)
echo "Previous tag: $PREV_TAG"
# Fallback to first tag if no previous
if [ -z "$PREV_TAG" ]; then
PREV_TAG=$(echo "$TAG_LIST" | head -n1)
echo "Fallback to first tag: $PREV_TAG"
fi
echo "prev_tag=$PREV_TAG" >> $GITHUB_OUTPUT
- name: Determine new ref
id: newref
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "new_ref=${{ github.event.pull_request.head.sha }}" >> $GITHUB_OUTPUT
else
echo "new_ref=HEAD" >> $GITHUB_OUTPUT
fi
- uses: hashmap-kz/relimpact-action@main
with:
old-ref: ${{ steps.prevtag.outputs.prev_tag }}
new-ref: ${{ steps.newref.outputs.new_ref }}
output: release-impact.md
- name: Upload Release Impact Report
uses: actions/upload-artifact@v4
with:
name: release-impact-${{ github.run_id }}-${{ github.run_attempt }}
path: release-impact.md
📦 Установка
Домашний
brew tap hashmap-kz/homebrew-tap
brew install relimpact
Скачать ручное
👉
🧠 Как это работает
1⃣ Изображение
- Использует систему типа GO и AST SAINING:
- Обнаружает изменения разрыва: подписи метода, снятые поля, новые/удаленные типы и т. Д.
- Игнорирует форматирование и шум комментариев.
- На основе
golang.org/x/tools/go/packages
Полем
2⃣ изменение документов Markdown Docs
- Раздел-распределение
.md
Файлы:- Заголовки добавлены/удалены.
- Ссылки и изображения меняются.
- Раздел «Количество слов»
- На основе
goldmark
анализатор.
3⃣ другие файлы изменяются
- Группы изменяются по типу файла:
.sql
В.sh
В.json
В.yaml
В.conf
, и т. д.- Использование
git diff --name-status
Полем
Зачем его использовать?
Большинство PRS выпуска включают в себя:
✅ API меняется
✅ Обновления DOC
✅ Сценарии миграции
✅ Другие важные настройки конфигурации
Носыройgit diff
это шумно и трудно просмотреть.relimpact
дает вамПодготовка к выпуску, сосредотачиваясь на том, что важно.
📜 Лицензия
MIT Лицензия. Видеть
👉 Попробуйте сегодня:
Если вы нашли это полезным, оставьте ⭐ на GitHub - это помогает другим открыть для себя проект!
Счастливого выпуска 🚀
Оригинал