{"id":51338473,"url":"https://github.com/mohsen1/git-lazy-mount","last_synced_at":"2026-07-02T05:03:01.157Z","repository":{"id":367546181,"uuid":"1277722492","full_name":"mohsen1/git-lazy-mount","owner":"mohsen1","description":"Lazily mount a git repo without cloning it. Works with ordinary git commands","archived":false,"fork":false,"pushed_at":"2026-06-26T13:03:53.000Z","size":928,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T13:17:55.489Z","etag":null,"topics":["git","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mohsen1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-23T06:17:25.000Z","updated_at":"2026-06-26T13:03:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mohsen1/git-lazy-mount","commit_stats":null,"previous_names":["mohsen1/git-lazy-mount"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mohsen1/git-lazy-mount","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohsen1%2Fgit-lazy-mount","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohsen1%2Fgit-lazy-mount/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohsen1%2Fgit-lazy-mount/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohsen1%2Fgit-lazy-mount/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mohsen1","download_url":"https://codeload.github.com/mohsen1/git-lazy-mount/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohsen1%2Fgit-lazy-mount/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35033492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","rust"],"created_at":"2026-07-02T05:03:00.479Z","updated_at":"2026-07-02T05:03:01.148Z","avatar_url":"https://github.com/mohsen1.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `git-lazy-mount`\n\n**Lazily mount a git repo without cloning it. Files materialize as they are read or edited.**\n\n```bash\ngit lazy-mount https://github.com/example/huge-repo ~/huge-repo\n```\n\nAfter it returns, **your ordinary `git` and tools just work**:\n\n```bash\ncd ~/huge-repo\nvim src/main.rs\ngit commit -am 'Some edit'\ngit switch -c feature\ngit push\n```\n\n\n## Why?\n\nThis is aimed at microVMs that spin up to run coding agents against a git repository. The idea is that the coding agent can start working immediately without having to wait for a full clone.\n\nWhen the agent runs a test or build, only relevant files are downloaded on demand.\n\n### `Grep` tool in AI session\n\nTools like `rg` and `git grep` read every file, so they pull the whole repo and undo the point of `lazy-mount`.\n\nTo mititgate this, we can route search through [`sgrep`](crates/sgrep) instead. It queries a code-search index ([Sourcegraph](https://sourcegraph.com) by default, and pluggable) and overlays your uncommitted edits, fetching nothing.\n\nMore in [`crates/sgrep`](crates/sgrep).\n\n## Performance in real world\n\nAcross **20 repositories** — `facebook/react` to the 179k-file LLVM tree —\n`git clone --depth 1` totals **7.3 GB** vs **1.3 GB of lazy mounts (5.5×\nless)**. Ready time is **268.7 s** for shallow clone vs **88.7 s** for\nlazy-mount (3.0× faster), and each lazy mount is ready in **0.8–15.1 s**\n(measured in Firecracker microVMs):\n\n![Disk to work on each repo: shallow git clone vs git lazy-mount](benchmarks/charts/disk.svg)\n\nLazy mounts keep **full history** even when the clone baseline is shallow, are\nready in seconds, and materialize only the files you touch. In the full\nFirecracker agent benchmark, lazy-mount won **19 of 20** code-search/edit/commit\ntasks: full clone+agent totaled **3394.2 s** vs **1322.7 s** for lazy\nmount+agent (**2.57× faster**), with the only loss on the tiny `vue` repo. Full\ndata, time/disk charts, and the session-time breakdown:\n[`benchmarks/`](benchmarks/).\n\n\n## Linux Only\n\n**Linux only**: because almost all microVMs are Linux-based.\n\nThe whole stack (a transparent kernel-mounted working tree) is built on Linux FUSE (libfuse3, `/dev/fuse`).\n\n### Windows and macOS\n\nWindows and macOS are not supported. The design notes and feasibility studies are kept under [`docs/future-platforms/`](docs/future-platforms/) if we pick them up later.\n\n\n## Install / build\n\n```bash\n# Linux. Needs libfuse3 + the system git (\u003e= 2.36).\ncargo build --release -p glm-cli --features fuse   # produces `git-lazy-mount`\n```\n\n## Docs\n\nEverything is in [`docs/`](docs/):\n\n* **Using it**: [compatibility](docs/compatibility.md) (which `git` commands work, and how lazily) and [limitations](docs/limitations.md) (what's deferred, and why).\n* **How it works**: the [architecture overview](docs/architecture.md), then deep-dives into the [worktree model](docs/worktree-model.md), [FUSE semantics](docs/fuse-semantics.md), and [object fetching](docs/object-fetching.md).\n\n## License \n\nMIT + Apache\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohsen1%2Fgit-lazy-mount","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohsen1%2Fgit-lazy-mount","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohsen1%2Fgit-lazy-mount/lists"}