Files
versioningcpp/README.md
T

90 lines
2.5 KiB
Markdown

# versioningcpp
A native C++20 implementation of a file versioning, archival, and remote replication system with SQLite storage, content-addressed deduplication, HTTP API, and SFTP upload support.
This project is presented as an academic achievement in systems engineering: static binaries, deterministic builds, and byte-exact verification under high concurrency (tested to 50,000 concurrent clients on loopback).
## Features
- Content-addressed chunk store with SHA-256 deduplication
- SQLite catalog with safe concurrent access
- File ingestion, filtering, diffing, restore, and recovery
- Maintenance, monitoring, and statistics subsystems
- Minimal socket-based HTTP API (`/api/health` and versioned API surface)
- SFTP remote replication and uploader pipeline
- CLI (`versiond-cli`) and embeddable static library (`versiond`)
- Integrated test suite (`versiond-tests`)
## Repository layout
- `include/versiond/` public headers
- `src/` implementation units (`api.cpp`, `db.cpp`, `store.cpp`, `ingest.cpp`, `monitor.cpp`, `maintenance.cpp`, `recovery.cpp`, `restore.cpp`, `stats.cpp`, `remote.cpp`, `uploader.cpp`, `cli.cpp`, `dbsafe.cpp`, `filters.cpp`, `diff.cpp`, `impl.cpp`, `config.cpp`, `util.cpp`, `main.cpp`)
- `tests/test_all.cpp` integration and smoke tests, including live HTTP smoke test
- `deps/` vendored third party material
- `build/` out of tree build output (not committed)
## Requirements
- CMake >= 3.20
- C++20 compiler (GCC 11+ or Clang 14+)
- SQLite3 development libraries
- OpenSSL (libcrypto)
On Debian/Ubuntu:
```sh
sudo apt install cmake g++ libsqlite3-dev libssl-dev
```
## Build
```sh
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
```
Artifacts:
- `build/versiond-cli`
- `build/versiond-tests`
- `build/libversiond.a`
## Test
```sh
ctest --test-dir build -V
./build/versiond-tests
```
The suite includes storage roundtrip checks, API formatting checks, and a live loopback HTTP smoke test.
## Usage
```sh
./build/versiond-cli --help
```
Library use:
```cpp
#include "versiond/versiond.hpp"
```
See `PLAN.md` for the module mapping and `REGISTRY.md` for interface provenance.
## Documentation
- `CHANGELOG.md`
- `CONTRIBUTING.md`
- `CODE_OF_CONDUCT.md`
- `SECURITY.md`
- `CITATION.cff`
- `PLAN.md`
- `REGISTRY.md`
## License
Distributed under the Do What The Fuck You Want To Public License, Version 2 (WTFPL-2). See `LICENSE`.
See also: README.md, INSTALL.md, CLI.md, PLAN.md, REGISTRY.md, AGENTS.md, skills/versiond-admin/SKILL.md.