Головна / Статті

Скасуйте підписку на GUI 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 та іншими дистрибутивами, часто зберігають однакову звичку на різних пристроях — тримають кілька клонів відкритими одночасно — і хочуть миттєво бачити стан гілок, не переключаючись між окремими вікнами. Багато комерційних GUI для Git передбачають роботу з одним проектом за раз. Така модель погано підходить, коли щоденна робота включає кілька репозиторіїв.

Ціни на підписку є ще одним тиском. Інструменти на кшталт GitKraken є функціональними, проте сповіщення про поновлення може змусити поставити серйозне запитання: якщо справжніми потребами є перемикання між гілками, візуалізація дерева комітів, підготовка до збереження та робота в терміналі, чи виправдовує це ще одну щомісячну оплату?

SauceCtrl дає відповідь на це запитання. Він має ліцензію MIT, є відкритим кодом та працює на локальному комп’ютері, а не як хостований клієнт SaaS.

Використання різних дистрибутивів є поширеним явищем на Linux-десктопах: один і той самий розробник може використовувати Debian на робочій станції, Fedora на ноутбуку та іммутабельну версію дистрибутива на портативному пристрої. Вимога до продукту полягає у тому, щоб програма легко встановлювалася на всі ці пристрої без необхідності використання приватного репозиторію пакетів, а не у її додатковому розробці.

Чому саме зараз

Два зміни в екосистемі зробили можливим створення продукту протягом вихідних.

GitHub CLI (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. Будемо раді отримати повідомлення про проблеми та запити на зміни, якщо щось не працює або бракує певного процесу роботи.