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:

sudo apt install cmake g++ libsqlite3-dev libssl-dev

Build

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

Artifacts:

  • build/versiond-cli
  • build/versiond-tests
  • build/libversiond.a

Test

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

./build/versiond-cli --help

Library use:

#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.

S
Description
Academic versioning system in C++
Readme WTFPL Cite this repository
8.7 MiB
Languages
Makefile 70.2%
C++ 16.5%
CMake 7.6%
HTML 4.5%
Shell 1.1%
Other 0.1%