Главная / Статьи

Отмените подписку на графический интерфейс Git и запустите SauceCtrl локально на Linux.

SauceCtrl — это клиент Git с открытым исходным кодом, разработанный с использованием Bun для Linux, оснащенный панелью с несколькими репозиториями, графом коммитов, терминалом PTY и возможностью пакетирования в формате AppImage, без ежемесячной платы.

Издатель: REACTAPP.TOP3 мин чтения772 слов

Источники: I Cancelled GitKraken and Built My Own Git GUI

Местный клиент Git с открытым исходным кодом, предназначенный для рабочих процессов в Linux: несколько репозиториев отображаются одновременно, всё происходит в одном окне, и нет ежемесячной платы за подписку.

Разработчики, которые работают с Debian, Fedora и другими дистрибутивами, часто сохраняют привычку открывать несколько клоонов одновременно на разных устройствах и хотят сразу видеть состояние веток, не переключаясь между отдельными окнами. Многие коммерческие графические интерфейсы Git предполагают работу с одним проектом за раз. Такая модель плохо подходит, когда повседневная работа включает несколько репозиториев.

Цены за подписку также создают дополнительное давление. Инструменты вроде GitKraken обладают необходимыми функциями, но уведомление о продлении может заставить задаться вопросом: если на самом деле нужны только возможность переключения веток, граф коммитов, режим подготовки к коммиту и терминал, оправдана ли ещё одна ежемесячная оплата?

SauceCtrl дает на этот вопрос ответ. Он распространяется под лицензией MIT, имеет открытый исходный код и работает на локальном компьютере, а не как клиент в формате SaaS.

Использование различных дистрибутивов — обычное явление на Linux-десктопах: один и тот же разработчик может использовать Debian на рабочем столе, Fedora на ноутбуке и иммутабельную версию дистрибутива на портативном устройстве. Требование к продукту заключается в том, чтобы он корректно устанавливался на всех этих устройствах без необходимости в собственном хранилище пакетов, а не в добавлении такой возможности задним числом.

Почему именно сейчас

Два изменения в экосистеме сделали возможным создание версий продукта за выходные.

CLI GitHub (gh) уже позволяет выполнять операции с GitHub прямо из терминала. В десктопном приложении нет необходимости в использовании специальных механизмов OAuth — достаточно выполнить команду gh auth login, пройти процедуру авторизации в браузере и продолжить работу. SauceCtrl включает настоящий терминал в нижней части окна именно для выполнения таких команд.

Bun предоставляет быструю среду выполнения JavaScript с встроенными SQLite и FFI. Это важно, поскольку интегрированный терминал требует настоящего PTY, а не косметического элемента интерфейса, и node-pty не работает в Bun. Поэтому приложение открывает PTY с помощью openpty через bun:ffi. Такое ограничение кажется необычным, но в итоге получается рабочий терминал.

Современные редакторы с поддержкой ИИ также сократили время сборки. Раньше почти не оставалось времени на личный графический интерфейс Git; сочетание Bun, gh и кодирования с помощью агентов сделало реализацию такой идеи возможной.

Что он делает

SauceCtrl отображает интерфейс, рендеримый браузером, внутри окна рабочего стола, в то время как процесс Bun на хост-системе выполняет основную работу — вызывает git, взаимодействует с gh, управляет терминалами и хранит метаданные проекта в SQLite по пути ~/.sauce-ctrl/.

Версия 0.1 включает:

  • Боковую панель для нескольких проектов, позволяющую добавлять репозитории и переключаться между ними без перезагрузки приложения
  • Контроль веток с поддержкой локальных и удаленных референсов, включая возможность выбора версии из заголовка
  • Диаграмму состояний истории коммитов на основе «дорожек», аналогичную той, что используют платные клиенты
  • Панели с деталями коммитов: сообщение, автор, дата, родительские коммиты и статистика по каждому файлу
  • Процессы подготовки к коммиту и самого коммита: добавление/удаление файлов в стадию подготовки, ввод сообщения и сохранение коммита
  • Интегрированный терминал, связанный с активным репозиторием, для выполнения команд вроде gh auth login или любых других команд
  • Путь к настройкам GitHub для установки и аутентификации gh прямо из интерфейса приложения

Ничего экзотического — просто все необходимое в одном месте.

Часть, связанная с AppImage

Отправка ещё одного хрупкого пути установки для каждой дистрибутивной среды была нежелательна. Поэтому SauceCtrl распространяется в формате AppImage: достаточно скачать и запустить один файл, в котором приложение объединено с движком Bun. Данные проекта и настройки по-прежнему хранятся в папке ~/.sauce-ctrl/, независимо от того, запускаете ли вы приложение из исходного кода или из AppImage.

Сборка из исходного кода выполняется следующим образом:

git clone https://github.com/rohit-gh/sauce-ctrl.git
cd sauce-ctrl
bun install
bun run build:appimage

Результат сборки сохраняется в файле release/SauceCtrl-x86_64.AppImage. Скрипт сборки также может скопировать этот файл в папку Downloads и сделать его исполняемым. Требуется системный инструмент git (а также gh, если важны функции GitHub), но проблемы с управлением пакетами между дистрибутивами в основном исчезают.

Технологическая стековая сборка (для любопытных)

Трафик терминала через WebSockets изолируется в отдельном подпроцессе Bun. На практике размещение этого канала внутри HTTP-сервера Nitro приводило к замедлению соединений; в репозитории описано решение для тех, кто хочет получить информацию о причинах проблемы.

Адаптируйте под себя

Поскольку проект является с открытым исходным кодом, команды могут изменять иконки, темы, копировать структуру проекта или создавать собственные версии AppImage. Для структурированной помощи предусмотрены файлы контекста, ориентированные на агентов, такие как AGENTS.md, а также правила Cursor.

Цель не в полном совпадении функций со всеми коммерческими клиентами. Цель — наличие нескольких репозиториев, единый интерфейс, упаковка в формате, соответствующем Linux, и отсутствие необходимости в подписке. Если это соответствует вашим требованиям, скопируйте репозиторий SauceCtrl с GitHub (пользователь rohit-gh, проект sauce-ctrl) под лицензией MIT. Будем рады получить сообщения об ошибках и петиции по улучшению, если что-то не работает или отсутствует определенный рабочий процесс.