# arc ![license] ![activity] [license]: https://badge.hanna.lol/license/BlueOak-1.0.0 [activity]: https://badge.hanna.lol/activity/hanna/arc A delta-based version control system written in Rust. Unlike Git's snapshot-based model, Arc stores incremental deltas using ZSTD-compressed bincode files. Changes are automatically tracked without manual staging, and commits are immutable once created. Arc uses a **bookmark** system instead of branches, and bridges to Git remotes for push, pull, clone, and sync operations via `libgit2`. ## Features - Incremental delta storage (ZSTD + bincode) - Automatic change tracking (no staging step) - Bookmarks and immutable tags - Named stashes - Three-way merge and graft (cherrypick/rebase) - Git bridge for remote operations (push, pull, clone, migrate, sync) - Optional SSH commit signing - Per-repo and global YAML configuration with aliases - `.arcignore` / `.ignore` support ## Building Arc builds exclusively through Nix: ```sh nix build ``` The flake uses `nixpkgs-unstable`, `flake-parts`, `fenix`, and `crane`. A dev shell is available for iterative work: ```sh nix develop ``` ## Usage ``` arc init [path] Initialize a new repository arc commit Commit current changes arc status Show changes since last commit arc diff [start..end] Show a diff of changes arc log [start..end] Show commit history arc show Show details of a ref or commit arc history [start..end] Show per-line modification history arc switch Switch worktree to a bookmark or tag arc merge Merge a bookmark or tag into the worktree arc revert Revert a commit or range arc reset [file...] Reset worktree to the last commit arc graft --onto Cherrypick commits onto a bookmark arc mark add|rm|list|rename Manage bookmarks arc tag add|rm|list Manage tags arc stash create|use|push|pop|rm|list Manage named stashes arc push [-r remote] Push to a git remote arc pull [-r remote] Pull from a git remote arc clone [-b branch] [path] Clone a git remote as an arc repo arc migrate Convert a git repo to an arc repo arc sync [-p] Sync bookmarks and tags with remote arc remote add|rm|list Manage remotes arc config set|get|show|unset [-g] Manage configuration ``` ## Testing ```sh nix develop -c cargo test nix develop -c cargo clippy nix develop -c cargo fmt --check ``` ## License [Blue Oak Model License 1.0.0](LICENSE.md)