feat: support snapshot#22
Merged
Merged
Conversation
Signed-off-by: kerthcet <kerthcet@gmail.com>
Signed-off-by: kerthcet <kerthcet@gmail.com>
Signed-off-by: kerthcet <kerthcet@gmail.com>
Signed-off-by: kerthcet <kerthcet@gmail.com>
Signed-off-by: kerthcet <kerthcet@gmail.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces an initial “Git-inspired” snapshot subsystem in the sandd daemon crate (content-addressable object store + tree metadata + snapshot manager), along with supporting docs, examples, and benchmarks. It also reshuffles documentation links to point at new docs/proposals/* specs and adds a sandd library target to expose the snapshot API to examples/benches.
Changes:
- Add a new
sandd::snapshotmodule (object store, tree model, snapshot manager, types) with async create/restore/list/get/delete operations. - Add snapshot examples and Criterion benchmarks; add a Makefile target to run/view benchmark results.
- Add proposal docs (Tunnel/Protocol/Snapshots) and update repo documentation links to point to the proposals.
Reviewed changes
Copilot reviewed 17 out of 20 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| sandd/src/snapshot/types.rs | Defines Snapshot/SnapshotInfo metadata types. |
| sandd/src/snapshot/tree.rs | Defines tree entry format + mode/mtime helpers. |
| sandd/src/snapshot/object_store.rs | Implements BLAKE3 content-addressable blob store + tests. |
| sandd/src/snapshot/manager.rs | Implements snapshot creation/restoration + snapshot listing APIs + tests. |
| sandd/src/snapshot/mod.rs | Exposes snapshot submodules and re-exports key types. |
| sandd/src/main.rs | Exposes snapshot module from the binary crate; simplifies command execution path. |
| sandd/src/lib.rs | Adds a library crate entrypoint exporting snapshot. |
| sandd/Cargo.toml | Adds library target, examples, benchmarks, and snapshot-related deps. |
| sandd/benches/snapshot_bench.rs | Adds Criterion benchmarks for snapshot create/restore scaling. |
| examples/snapshot_simple.rs | Adds a simple end-to-end snapshot demo. |
| examples/snapshot_real_project.rs | Adds a “real repo” snapshot demo using git clone. |
| README.md | Updates documentation links to proposal docs. |
| Makefile | Adds benchmark / benchmark-results targets. |
| hack/docker/README.md | Updates tunnel doc link to proposals path. |
| examples/tunnel-simple/README.md | Updates tunnel doc links to proposals path. |
| docs/proposals/TUNNEL.md | Adds tunnel mode proposal documentation. |
| docs/proposals/SNAPSHOTS.md | Adds snapshot proposal/design documentation. |
| docs/proposals/PROTOCOL.md | Adds protocol proposal/spec documentation. |
| docs/DEVELOP.md | Updates protocol spec link to proposals path. |
| Cargo.lock | Locks new dependencies for snapshot/bench/proposal additions. |
Comments suppressed due to low confidence (1)
Makefile:145
benchmark-resultsusesopen, which is macOS-specific and will fail on Linux/Windows. Prefer a portablexdg-open/openfallback or print the path for manual opening.
.PHONY: benchmark-results
benchmark-results:
@echo "Benchmark results for sandd daemon:"
@echo ""
open target/criterion/report/index.html
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: kerthcet <kerthcet@gmail.com>
Signed-off-by: kerthcet <kerthcet@gmail.com>
Member
Author
|
/lgtm |
Member
Author
|
/kind feature |
InftyAI-Agent
approved these changes
Jun 29, 2026
InftyAI-Agent
left a comment
Member
There was a problem hiding this comment.
Approved: PR has both lgtm and approved labels
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does / why we need it
Which issue(s) this PR fixes
part of #6
Special notes for your reviewer
Does this PR introduce a user-facing change?