From 90d289d92f03b47065ea45185ff2f9926e027517 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 16 Aug 2026 13:57:49 +0200 Subject: [PATCH] Release version 3.4.3 --- CHANGELOG.md | 14 ++++++++++++++ pyproject.toml | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbcdc7a..9eb050f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [3.4.3] - 2026-08-16 + +- Backup: *create_version_directory* carried *exist_ok=True*, so a run starting + in the same wall-clock second as its predecessor claimed that predecessor's + generation. Generation names carry seconds, and a host with little to copy + finishes inside one — rsync *--delete* then overwrote a finished generation, + and only afterwards did *create_stamp_file* refuse the already-stamped + directory and exit 2. The guard reported the damage instead of preventing it. +- Backup: the generation directory is claimed exclusively. Claiming it is the + first filesystem action of a run, so a collision aborts before the first + write and names the second it collided on. +- Tests: the idempotence test asserted the reuse and gave way to one that + requires the refusal. + ## [3.4.2] - 2026-08-15 - Backup: *has_image* matched the raw *.Config.Image*, so the registry host and diff --git a/pyproject.toml b/pyproject.toml index 208eeeb..32ea21a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "backup-docker-to-local" -version = "3.4.2" +version = "3.4.3" description = "Backup Docker volumes to local with rsync and optional DB dumps." readme = "README.md" requires-python = ">=3.9"