Style the sidebar downloads line to align with the boxes above and the
table of contents below (padding 22px), with a horizontal separator both
between the search box and the downloads line and between the downloads
line and the table of contents.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the multi-line "Download docs" block with a compact single line
"Downloads: PDF | HTML | ePub" placed right below the search box.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The resources doc page was removed long ago (#2088), but it was still
referenced in latex_appendices. This went unnoticed because PDF builds
were not enabled; enabling pdf surfaced it as a doctree KeyError.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Enable the pdf format on Read the Docs (the LaTeX build config already
existed in conf.py) and add a "Download docs" section to the sidebar that
links the offline formats (PDF, HTML zip, ...). The links are populated
from the Read the Docs addons data, reusing the same mechanism as the
version selector, so they are version-correct and hidden when unavailable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- update to 'borg key change-passphrase' in env help
- remove outdated borg-change-passphrase man page from 2017
- remove outdated change-passphrase.rst.inc
This feature allows multiple repositories to share deduplication-relevant secrets (id_key and chunk_seed) while maintaining secure, independent encryption keys.
`borg key export-related-secrets <REPO> <SPATH>` to export the secrets to a JSON file.
`borg init --import-related-secrets <SPATH> <REPO>` to initialize a new repository using the secrets from the JSON file.
Both repositories must use the same chunk id algorithm (both HMAC-SHA256 or both BLAKE2b).
If you create related repositories with borg 1.4.x, you can later transfer their archives
to one or multiple related new borg2 repositories without breaking deduplication.
But please note that we might remove BLAKE2b support for new borg2 repos, see #8867,
so this might only work for HMAC-SHA256 in the end.
When using the slashdot hack (e.g. `borg create ARCHIVE rootfs/./`),
the source directory's metadata was being excluded instead of archived as
the archive root. This happened because `create_helper` treated the
slashdot target directory the same as its parent directories (which should
be stripped), rather than recognizing it as the root of the archive.
Added a new condition in `create_helper` to detect when the current path
matches the strip prefix target exactly (`path + "/" == strip_prefix`) and
archive it as `"."` (the archive root) instead of excluding it.
- `src/borg/__init__.py`: The `setuptools_scm` fallback version `0.1.dev1`
was incorrectly bypassing the assertion check (as `0` and `1` are valid
integers), which hid the intended helpful error message when building
from source without tags. Added an explicit check for the `0.1.dev` prefix.
- `src/borg/version.py`: `parse_version` and `format_version` have been
updated to correctly understand `setuptools_scm`'s `.dev` or `dev` prefixes.
These dev releases are now properly encoded in the version tuple as `-9`
(which logically makes them older than alphas `-4`, betas `-3`, rcs `-2`,
and final `-1`), and correctly reformatted to `.dev` strings.
On macOS, os.fsync() is an OS-level flush (kernel page cache -> drive
write buffer). It does not issue a HW-level flush, so a power loss can
still discard data the drive has buffered. F_FULLFSYNC additionally
flushes the drive's own write buffer to persistent storage, giving true
durability guarantees.
Add fdatasync() and sync_dir() to darwin.pyx using F_FULLFSYNC with
an os.fsync() fallback for network filesystems that do not support it.
Import them in platform/__init__.py so they override the base
implementations on macOS.
Backport of #9385 to 1.4-maint.
Signed-off-by: Mrityunjay Raj <mr.raj.earth@gmail.com>