88 lines
2.4 KiB
Markdown
88 lines
2.4 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`.
|