这个项目能做什么

Simgit 是一个命令行工具,旨在创建和管理 Git worktree,并增强磁盘效率和隔离性,主要用于在单个仓库上运行多个 AI 代理或进行并行开发。它通过利用写时复制(CoW)机制,确保多个 worktree 之间未更改的文件共享物理磁盘空间,而不是被重复复制。 该工具支持多种操作系统和文件系统: * **macOS(APFS)**:利用原生 `clonefile`,零依赖。 * **Linux(btrfs、xfs)**:使用原生 reflink 能力,零依赖。 * **Linux(ext4 等)**:回退到 `fuse-overlayfs` 实现 CoW 功能,无需 root 或内核模块。 * **Windows**:不直接支持,但可以在 WSL 下配合受支持的 Linux 文件系统使用。 Simgit 无需守护进程或服务器即可运行,依赖 Git 管理引用,依赖文件系统管理数据。每个 worktree 都作为标准的 Git 链接检出(linked checkout)运行,为分支、索引和工作树提供完全隔离。这允许代理在各自的分支上并行工作,并通过正常的 Git 合并集成更改。 关键优势在于每个额外 worktree 的边际成本,远低于完整的 `git worktree` 副本。测量显示,成本随跟踪路径数量扩展(在 APFS 上约为每个跟踪路径 ~0.4 KiB,加上 ~60 KiB 固定开销),而不是随内容大小扩展。这使得它对于包含大文件的仓库特别高效。 Simgit 提供添加、列出、删除和垃圾回收 worktree 的命令。`sg run` 命令便于在这些隔离的 worktree 中启动代理,使它们能够像操作普通检出一样与仓库交互。它支持稀疏检出(sparse checkout),以进一步减少专注于特定子树的代理的磁盘占用。worktree 可以标记为临时(ephemeral)以自动垃圾回收,或标记为持久(persistent)以长期使用。该工具还提供 JSON 输出,用于编程式编排。