GitVerse CLI
gvc - командная строка для GitVerse на базе неофициального Go SDK.
Первый релиз использует только token-based аутентификацию. OAuth, browser login,
device flow, username/password и SSH-key login пока намеренно не поддерживаются.
Установка
Скачайте архив для своей ОС и архитектуры на странице
релизов GitVerse, распакуйте
gvc (gvc.exe для Windows) и добавьте каталог с бинарным файлом в PATH.
Проверяйте целостность скачанных файлов по checksums.txt.
Из локального checkout исходников:
go install ./cmd/gvc
Для локальной разработки:
make verify
go run ./cmd/gvc --help
Аутентификация
Добавить именованный логин:
gvc auth login add main --token "$GITVERSE_TOKEN"
Указать base URL:
gvc auth login add staging \
--base-url https://api.gitverse.ru \
--token "$GITVERSE_TOKEN"
Посмотреть логины без вывода токенов:
gvc auth login list
gvc auth login show main
Выбрать логин по умолчанию:
gvc auth login set-default main
Для CI и одноразовых запусков можно не сохранять логин:
GITVERSE_TOKEN=... gvc whoami
GITVERSE_TOKEN=... GITVERSE_BASE_URL=https://api.gitverse.ru gvc repo list
Частые команды
gvc, gvc --help и команды-группы без подкоманды, например gvc issue или
gvc run, показывают справку со списком доступных подкоманд. Для выполнения
операции используйте явную подкоманду: list, view, create и т.д.
Repo-scoped команды следуют стилю gh: по умолчанию gvc берет репозиторий из
текущего git remote, а для явного выбора используйте -R/--repo или
GITVERSE_REPO. Позиционные аргументы repo-scoped команд считаются целевыми
значениями команды, а не репозиторием; если ref, tag, workflow или path содержит
/, репозиторий всё равно передавайте через -R, env или git-контекст.
gvc whoami
gvc auth status
gvc config list
gvc repo list
gvc repo list alice --type owner --sort updated --direction desc
gvc repo view owner/repo
gvc pr list -R owner/repo --state open
gvc pr view 42 -R owner/repo
gvc issue list -R owner/repo --state open
gvc issue create -R owner/repo --title "Ошибка" --assignee alice --label bug
gvc issue edit -R owner/repo 42 --add-label urgent --remove-assignee alice
gvc issue close -R owner/repo 42 --comment "Исправлено"
gvc issue reopen -R owner/repo 42
gvc issue parent -R owner/repo 42
gvc issue sub-issues -R owner/repo 42
gvc issue create -R owner/repo --title "Подзадача" --parent 42
gvc label list -R owner/repo
gvc label create -R owner/repo bug --color ff0000
gvc repo branches -R owner/repo main
gvc pr review -R owner/repo 42 --approve --body "Готово"
gvc pr reviews list -R owner/repo 42
gvc release list -R owner/repo
gvc run list -R owner/repo
gvc run list -R owner/repo --workflow build.yml
gvc workflow list -R owner/repo
gvc workflow view build.yml -R owner/repo
gvc workflow run build.yml -R owner/repo --branch main --input env=prod
gvc artifact download 42 -R owner/repo --output-file artifact.zip
gvc repo commits compare -R owner/repo --base main/trunk --head feature/one
gvc meta capabilities --command api --json-compact
gvc meta context --json-compact
gvc api /user
JSON output:
gvc repo view owner/repo --json
gvc repo view owner/repo --output json
gvc auth status --json-compact
gvc auth status --output json-compact
GITVERSE_REPO=owner/repo gvc pr list --output json
Machine-readable output:
gvc meta capabilities --command api --json-compact
gvc meta context --json-compact
gvc meta context --verify --json-compact
gvc repo delete owner/repo --json-errors
gvc issue close -R owner/repo 42 --comment "Исправлено" --dry-run --json-compact
Pagination:
gvc repo list --limit 30 --per-page 10
gvc repo list --limit 30 --per-page 10 --page-info --json-compact
gvc repo list --page-info --json-compact --jq .page_info
List commands follow the gh style, with one REST-specific addition:
--limit is the client-side maximum number of items to print, while
--per-page is the server-side page size. With --page-info, JSON output is
wrapped as {"data": ..., "page_info": ...}. page_info.total_count is set
only when GitVerse returns X-Total-Count; otherwise it is null. When the API
returns Link: rel="last", page_info includes last_page, total_pages and
remaining_pages.
Для поддерживаемых мутаций --dry-run не выполняет API-запросы. Preview
сохраняет прежние поля method, path и body, а для многошаговых issue-команд
дополнительно возвращает упорядоченный steps[]. Это относится и к созданию
issue с родителем, и к повторяемым --add-sub-issue / --remove-sub-issue.
repo migrate --dry-run не читает credential env vars и показывает
source_token / source_password только как <redacted>.
Для endpoint-ов без отдельной typed-команды используйте raw REST escape hatch:
gvc api /repos/owner/repo
gvc api --method POST --input payload.json /some/endpoint
Область покрытия
CLI exposes команды только для операций, которые уже есть в gitverse-go-sdk.
Если нужен новый GitVerse API workflow, сначала добавьте и протестируйте метод в
SDK, затем добавляйте CLI-команду.
OpenAPI v1.9 добавляет 19 typed workflows: issue types организации, фильтр роли
участников и репозитории команды, миграцию и статус репозитория, полное чтение и
фильтры веток, repository labels, parent/sub-issue связи, прямые реакции issue,
pull request reviews и inline review comments. Расширены фильтры repo list и
issue list. Подробное соответствие UX GitHub CLI зафиксировано в
docs/GITHUB_CLI_REFERENCE.md.
Миграция JSON в v0.4.0: ответы теперь используют только канонические поля v1.9.
Issue.is_locked заменено на locked, PullRequest.is_draft — на draft, а
время проверки commit signature сериализуется как verification.verified_at.
Скрипты, которые читали прежние ключи, нужно обновить до установки v0.4.0.
Формы команд и флагов сверены с локальным исходным checkout GitHub CLI в
../.codex/cli/cli: repo list [<username>], workflow list/view, run list -w,
повторяемые --assignee/--label и --add/--remove-*. GitVerse API не
поддерживает close reason, duplicate relation, projects, milestones и templates,
поэтому такие GitHub-only флаги намеренно не добавлены.
Текущие группы команд:
auth, config, whoami, completion
user, email
repo, pr, issue, label, release
run, workflow, artifact, variable, secret, runner
org, team, favorite, pages, webhook, smartclass, meta, api
Разработка
Проект устроен как Go-приложение:
cmd/gvc/main.go
internal/app
internal/commands
internal/config
internal/auth
internal/client
internal/output
internal/flags
internal/testutil
Не добавляйте публичный pkg/ без отдельного требования. Публичный Go API для
работы с GitVerse находится в gitverse-go-sdk, а CLI-пакеты остаются под
internal/.
Проверка:
make verify
Default verification не требует сети и живых GitVerse credentials.
Собрать release artifacts локально:
make release-dist VERSION=v0.4.0
Live smoke checks намеренно остаются opt-in и должны запускаться только против
одноразовых ресурсов.
Сообщество