Fast, configurable filesystem diffing for Go.
Alpha: APIs may change.
- Diff directories: compute minimal operations between two trees
- Modes: fast, accurate, checksum (+ ensure/require)
- Checksum stores: xattr or sidecar cache
- Globs: doublestar excludes
- Pretty/JSON/paths output
- CLI:
go install github.com/stefanpenner/go-fsdt/cmd/fsdt@latest - Library:
go get github.com/stefanpenner/go-fsdt@latest
- Usage:
fsdt [flags] <left> <right> - Common flags:
--modefast|accurate|checksum|checksum-ensure|checksum-require--algosha256 (for checksum modes)--xattrkey (e.g.user.sha256on Linux,com.yourorg.sha256on macOS)--sidecarDIR (alias:--checksum-cache-dir),--rootPATH,--precompute--cicase-insensitive,--excludeGLOB (repeat),--formatpretty|tree|json|paths
Example:
fsdt --mode accurate --format tree --exclude "**/.git/**" ./left ./rightimport (
fsdt "github.com/stefanpenner/go-fsdt"
op "github.com/stefanpenner/go-fsdt/operation"
)
a := fsdt.NewFolder()
b := fsdt.NewFolder()
a.FileString("README.md", "hello\n")
cfg := fsdt.DefaultAccurate()
d := fsdt.DiffWithConfig(a, b, cfg)
_ = op.Print(d) // pretty stringIssues and PRs are welcome.