Об этом проекте

Simgit — это инструмент командной строки, предназначенный для создания и управления Git worktree с повышенной эффективностью использования диска и изоляцией, в первую очередь для сценариев с несколькими AI-агентами или параллельной разработкой в одном репозитории. Это достигается за счёт использования механизмов copy-on-write (CoW), благодаря чему неизменённые файлы в нескольких worktree используют одно и то же физическое дисковое пространство, а не дублируются. Инструмент поддерживает различные операционные системы и файловые системы: * macOS (APFS): использует нативный clonefile без зависимостей. * Linux (btrfs, xfs): использует нативные возможности reflink без зависимостей. * Linux (ext4 и др.): переключается на fuse-overlayfs для CoW без необходимости root или модулей ядра. * Windows: напрямую не поддерживается, но может использоваться под WSL с поддерживаемой файловой системой Linux. Simgit работает без демона или сервера, опираясь на Git для ссылок и на файловую систему для управления данными. Каждое worktree функционирует как стандартный связанный checkout Git, обеспечивая полную изоляцию веток, индексов и рабочих деревьев. Это позволяет агентам работать параллельно в своих ветках и интегрировать изменения через обычные слияния Git. Ключевое преимущество — предельная стоимость каждого дополнительного worktree, которая значительно ниже, чем у полной копии `git worktree`. Измерения показывают, что затраты масштабируются с числом отслеживаемых путей (примерно ~0,4 KiB на отслеживаемый путь плюс ~60 KiB фиксированных накладных расходов в APFS), а не с размером содержимого. Это делает инструмент особенно эффективным для репозиториев с большими файлами. Simgit предоставляет команды для добавления, перечисления, удаления и сборки мусора worktree. Команда `sg run` помогает запускать агентов в этих изолированных worktree, позволяя им взаимодействовать с репозиторием как с обычным checkout. Поддерживаются sparse checkouts, чтобы ещё больше сократить использование диска для агентов, сосредоточенных на определённых поддеревьях. Worktree можно помечать как эфемерные для автоматической сборки мусора или постоянные для долгосрочного использования. Инструмент также предоставляет вывод JSON для программной оркестрации.