GitBor

Введение

GitBor — кроссплатформенный десктопный Git-клиент на Electron

Что такое GitBor

GitBor — свободный десктопный Git-клиент, альтернатива Fork, GitKraken и SourceTree. Сделан на Electron 28 + React 18 + TypeScript + Vite. Лицензия MIT.

Главные черты:

  • GUI поверх git CLI — приложение запускает обычный git из системы (или собственный бинарник из resources/git/{platform}/git) и парсит вывод. Никакого собственного git-движка — поведение совпадает с тем, что вы получите в терминале.
  • Виртуализированный граф коммитов на Canvas — строки рендерятся только для видимой области, layout считается в worker-потоке при > 2000 коммитов. Репозитории на 15000+ коммитов прокручиваются плавно.
  • Мульти-репо без блокировок — каждый открытый репозиторий это изолированный набор сервисов (RepoServicesRegistry). Длинный git pull на репо A не блокирует операции на репо B.
  • 5 уровней защиты данных — git reflog, auto-stash перед деструктивными операциями, сохранённый HEAD-хеш, WAL-журнал в .git/GitBor-journal.json, RecoveryManager при старте.
  • AI commit messages — генерация описания коммита из staged-diff одной кнопкой. Поддержка OpenAI, Ollama, LM Studio, DeepSeek, Groq и Qwen Web.

Архитектура коротко

Четыре слоя, зависимости текут только вниз:

Renderer (React)         — UI: Menu, Sidebar, Graph, Changes, Diff, Merge, SSH

Preload                  — contextBridge (безопасный IPC-мост)

Main (Node.js)           — Application + Safety + Git Layer + SSH Key Manager

Bundled git              — resources/git/{platform}/git

Поток данных: App.tsx → api.invoke() → preload (ipcRenderer) → MessageBridge (ipcMain) → CommandHandler → GitExecutor → git binary.

Куда дальше

TODO: добавить общий скриншот главного окна.