gmr

module
v0.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2026 License: MIT

README

gmr - Git Merge Request automation

CI Release Go Version Go Report Card

CLI-утиліта на Go, яка автоматизує створення Merge Request / Pull Request: стейджить зміни, генерує commit message через AI (Gemini / Claude / OpenAI), створює гілку і відкриває GitLab MR або GitHub PR - однією командою. Платформа визначається автоматично за URL origin remote.

Installation

Pre-built binary (рекомендовано)

Завантажити архів для вашої ОС / архітектури з GitHub Releases:

# linux-amd64 (заміни на linux-arm64 / darwin-amd64 / darwin-arm64 за потреби)
VERSION=$(curl -fsSL https://api.github.com/repos/slucheninov/gmr/releases/latest | jq -r .tag_name)
curl -L -o gmr.tar.gz \
  "https://github.com/slucheninov/gmr/releases/download/${VERSION}/gmr-${VERSION}-darwin-arm64.tar.gz"
tar -xzf gmr.tar.gz
sudo install -m 0755 gmr /usr/local/bin/gmr
gmr --version

Контрольні суми (checksums.txt) додаються до кожного релізу:

curl -L -O "https://github.com/slucheninov/gmr/releases/download/${VERSION}/checksums.txt"
sha256sum -c checksums.txt --ignore-missing
Через go install
go install github.com/slucheninov/gmr/cmd/gmr@latest

Бінарник буде у $(go env GOBIN) (за замовчуванням ~/go/bin). Переконайся, що ця тека є в PATH.

З вихідного коду
git clone https://github.com/slucheninov/gmr.git
cd gmr
go build -o gmr ./cmd/gmr
sudo install -m 0755 gmr /usr/local/bin/gmr

Requirements

  • glab - GitLab CLI (для GitLab репо)
  • gh - GitHub CLI (для GitHub репо)
  • git
  • GEMINI_API_KEY, ANTHROPIC_API_KEY, та/або OPENAI_API_KEY (хоча б один)
  • Авторизований glab (glab auth login) для GitLab API або авторизований gh (gh auth login) для GitHub API

Залежності jq і curl більше не потрібні - все робиться силами Go-бінарника.

Usage

gmr [options] [branch-name]   # full flow: commit + MR/PR
gmr -m                          # generate commit message only
gmr -s                          # after MR/PR, stay on the feature branch
gmr -h                          # help
gmr -v                          # version

Якщо branch-name не вказано, генерується автоматично: auto/YYYYMMDD-HHMMSS.

З прапорцем -m (--message) скрипт лише генерує commit message через AI (виводиться у stdout), без створення гілки, коміту чи MR/PR. Працює з будь-якої гілки.

З прапорцем -s (--stay) після успішного створення MR/PR ти залишаєшся на feature-гілці; за замовчуванням gmr переключається на основну гілку і робить git pull.

How it works

  1. Перевіряє, що ти на основній гілці і є зміни (у режимі -m - лише зміни).
  2. Визначає платформу (GitLab / GitHub) за URL origin remote.
  3. Стейджить всі зміни (git add -A).
  4. Генерує commit message через AI: Gemini → Claude → OpenAI → ручне введення.
  5. Створює гілку, комітить, відкриває MR (glab) або PR (gh).
  6. Для GitLab передає в glab явні title і description: використовує body commit message, а якщо його немає - генерує короткий ## Summary із заголовка коміту.
  7. Для GitHub - вмикає auto-merge зі squash (gracefully degrade, якщо репо це забороняє).
  8. За замовчуванням повертається на основну гілку і виконує git pull. З -s / --stay залишається на feature-гілці.

Configuration

Змінна Опис Default
GEMINI_API_KEY API ключ Google Gemini -
ANTHROPIC_API_KEY API ключ Anthropic Claude -
OPENAI_API_KEY API ключ OpenAI -
GEMINI_MODEL Модель Gemini gemini-flash-latest
ANTHROPIC_MODEL Модель Claude claude-sonnet-4-20250514
OPENAI_MODEL Модель OpenAI gpt-4o-mini
GEMINI_BASE_URL Base URL для Gemini API override https://generativelanguage.googleapis.com/v1beta
ANTHROPIC_BASE_URL Base URL для Claude API override https://api.anthropic.com
OPENAI_BASE_URL Base URL для OpenAI-compatible API override (наприклад LiteLLM) https://api.openai.com
GMR_PROVIDERS Порядок AI-провайдерів (comma-separated) gemini,claude,openai
GMR_MAIN_BRANCH Основна гілка auto (origin/HEAD, fallback: main/master)
GMR_MAX_DIFF Макс. рядків diff для AI 500
EDITOR Редактор для режиму e(edit) vim
NO_COLOR Вимкнути ANSI кольори у виводі -

Development

Гайд з локальної розробки, тестів, лінту і релізного процесу — у DEVELOPMENT.md. Контрибʼюторам також варто прочитати CONTRIBUTING.md.

License

MIT

Directories

Path Synopsis
cmd
gmr command
internal
ai
Package ai contains AI providers that turn a git diff into a commit message.
Package ai contains AI providers that turn a git diff into a commit message.
commit
Package commit contains helpers to derive MR/PR metadata from a commit message.
Package commit contains helpers to derive MR/PR metadata from a commit message.
git
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL