#30 Zoryn 0.47.0, новый сервис Gitoskop

25 июля 2026 г. • 2 Записи • Курировал X1Z53

Обновление о том, что произошло вокруг Альта на неделе с 19 по 25 июля 2026 года.

ALT Linux Team

Международная, в основном русскоговорящая, команда разработчиков свободного программного обеспечения. Основное направление деятельности ALT Linux Team — проект Sisyphus.

Zoryn

Ассистент ментейнера ALT Linux

rider сообщает:

zoryn 0.47.0

Герой релиза — zoryn gitery manage: полноэкранный TUI для просмотра и администрирования ваших репозиториев на gitery, не выходя из терминала. Под капотом у него — целое семейство скриптуемых команд zoryn gitery, а ещё в этом релизе devenv научился включать фичи на лету, и task получил пачку исправлений.

zoryn gitery manage

Запустили — и весь ваш namespace на gitery как на ладони: список репозиториев с квотой, размером и датой последнего коммита, мгновенный поиск и сортировка. Каждый репозиторий раскрывается прямо здесь: ветки, теги и refs, журнал коммитов, просмотр коммита с диффами, дерево файлов — всё с клавиатуры, всё без клонирования.

Но главное — управление. Для каждого репозитория доступны: смена кодировки, ветка по умолчанию, repack, переименование, копирование clone URL и удаление. А для генеральной уборки — отметка репозиториев и массовое удаление одним махом. Деструктивные действия спрашивают подтверждение.

Можно заглянуть и в чужой namespace: Tab или p, вводите логин — и смотрите чужие репозитории в режиме read-only. Удобно перед мерджем или копированием.

Команды zoryn gitery

Под TUI лежит семейство команд для скриптов. Чтение — через HTTP API gitoskop: ls, find-package, log, commit, diff, show, refs, branches, tags, tree, cat — везде есть --json. Изменения — через SSH-команды сервера: quota, clone, charset, default-branch, init-db, repack, mv-db, rm-db, каждая спросит подтверждение, если не дать -y. log, diff --patch и show красятся и листаются, как настоящий git log в терминале (честно учитывается NO_COLOR). find-package добирает все совпадения постранично, а не только первые 50. Дополнение по TAB знает имена репозиториев, веток, тегов и неймспейсов. Настройка: [gitery] login и [gitoskop] url в ~/.zoryn.

Ещё в этом релизе

  • zoryn devenv --feature ID (он же -F, можно несколько раз) — разовое включение фичи devenv на один запуск, поверх конфига, без правки файлов. А zoryn devenv feature add ID... внедряет фичи прямо в работающий podman-контейнер, не пересоздавая его, — как devenv install для пакетов. Фичи с монтированиями вежливо отсылаются к -F.
  • submit --with по TAB подсказывает последний запомненный номер таски (#121).

Исправления

  • task rebuild --parallel: сборщики с одинаковой архитектурой дедуплицируются — по одному на архитектуру (#124).
  • task batch: подпакет, уже добавленный в таску, больше не считается ошибкой; существующая таска находится, даже если Name: в спеке отличается от имени конфига (например, phpphp8.2).
  • up и spec add changelog: HTML-сущности в заголовках CVE из Mozilla-адвайзори декодируются — Copy & Paste больше не попадает в changelog спека. Спасибо Аджрату Махмутову (rauty@) за MR #125!

Спасибо всем, кто заводит ошибки и фичреквесты. Продолжайте

Terminal window
apt-get install zoryn

Сайт проекта

Gitoskop

Быстрый read-only API для Git-репозиториев

rider сообщает:

Gitoskop — лёгкий HTTP-сервис на Rust, отдающий содержимое десятков тысяч bare-репозиториев через простой JSON API. Современная замена gitweb: прямое чтение объектов с диска через gitoxide, без CGI и форков. Уже в проде на git.altlinux.org.

Скорость

  • ~1 мс (p50) на горячих эндпоинтах, сотни запросов в секунду на одной машине.
  • Двухуровневый кэш в памяти: поиск и листинг мгновенны, свежие пуши видны сразу (инвалидация по mtime).
  • Zero-copy отдача блобов: файл 2 ГБ — с RSS ≈ размеру файла.
  • Один статический бинарник, контейнер на scratch.

Безопасность

  • Read-only по построению — сервис не может изменить репозитории. Stateless, минимальная поверхность атаки.
  • Изоляция путей: канонизация и confinement каждого пути; симлинки за пределы корня отклоняются — включая objects/info/alternates и pack-файлы.
  • Строгая валидация revspec: блокируются :/text, @{...}, ~N — никаких неограниченных обходов истории.
  • Защита от DoS: лимиты на блобы (50 МиБ), деревья/диффы (50 000 записей), конкурентность и таймауты; размер объекта проверяется до распаковки — декомпрессионные бомбы не пройдут.
  • Безопасный /raw: всегда nosniff + Content-Disposition: attachment — недоверенные байты не выполнятся в браузере.
  • Усиленный systemd-юнит: ProtectSystem=strict, NoNewPrivileges, фильтр syscall’ов, лимит памяти, непривилегированный пользователь.
  • Чистая цепочка поставки: зависимости только на Rust, cargo deny в CI, SBOM и grype-скан еженедельно.

Простой API

Обычный REST + JSON, единый формат ошибок, живая спецификация OpenAPI 3.1:

Terminal window
# поиск репозиториев
curl 'https://git.altlinux.org/gitoskop/api/_/search?q=git'
# сводка по репозиторию
curl 'https://git.altlinux.org/gitoskop/api/pkg/gears/g/git.git'
# патч, готовый к git am
curl 'https://git.altlinux.org/gitoskop/api/pkg/gears/g/git.git/show/abc123?format=patch' | git am

Всё дерево: summary, refs, branches, tags, log, commit, diff, patch, show, tree, blob, raw. Метрики Prometheus из коробки.

Лицензия: AGPL-3.0-or-later

Пакет уже в Сизифе и отправлен на тестирование в p11:

Terminal window
apt-get install gitoskop.

Прод и OpenAPI-спека | Исходный код проекта | Сайт проекта

На этом всё!

Спасибо всем участникам сообщества за новости! Заходите в наш чат: https://t.me/ThisWeekInALT, присылайте новости в @ThisWeekInALT_bot и не забывайте ознакомиться с инструкцией по отправке новостей на странице О Нас.

До следующей недели!