151 Commits

Author SHA1 Message Date
Thomas Waldmann e91f4efab1 make build_usage / build_man: do not show options with SUPPRESS 2026-03-10 18:36:22 +01:00
Thomas Waldmann 9a469e32cf fix make build_man / build_usage 2026-03-10 18:36:05 +01:00
Suryansh Pal ba6706395a use xxhash from PyPI, fixes #6535 2026-03-08 13:06:01 +01:00
defnvary 4344eb37d1 use zstd from python stdlib or backport.zstd, closes #9261 2026-02-23 00:33:21 +05:30
Mrityunjay Raj 1c0bf36275 remove handwritten bash/zsh shell completions, fixes #9178
Remove the handwritten bash and zsh shell completion scripts now that
auto-generated completions via borg completion bash/zsh (powered by
shtab, #9172) are tested and working. Fish completions are kept as
shtab does not yet support fish.

Replace string-matching tests with focused behavior tests: script size
sanity, shell syntax validation (bash -n / zsh -n), and tests that
invoke the custom preamble functions in bash (sortby key dedup,
filescachemode mutual exclusivity, archive name and aid: prefix
completion against a real repository).
2026-02-17 19:33:54 +01:00
TW 4e3352ed58 Merge pull request #9327 from ThomasWaldmann/fixes-master
Misc. fixes (master)
2026-02-17 15:16:02 +01:00
Mrityunjay Raj f1ed09965f docs: fix broken :ref: references in man pages, fixes #7239 2026-02-16 22:36:07 +05:30
Thomas Waldmann de51d24464 pyinstaller binary: do not exclude ssl, needed for pyfuse3/trio, fixes #9196 2026-02-14 19:32:38 +01:00
Thomas Waldmann d73a88ebbe rename Dockerfile to match script name 2026-02-14 19:32:32 +01:00
Thomas Waldmann 94d56e1c89 pyinstaller: cockpit: add tcss file, add unicode data 2026-02-14 19:05:37 +01:00
Thomas Waldmann 40a2bb7032 linux-run: run commands (e.g. tox) in a podman linux container
this is useful to run the linux tests on a mac, e.g. to test fuse stuff.
2026-02-14 12:19:32 +01:00
Thomas Waldmann 8f40baa34b refactor: use |= operator for dictionary updates (py39) 2025-11-03 22:18:26 +01:00
Thomas Waldmann 471e302024 upload-pypi: use borg-specific repository names
so it finds the right api token in .pypirc
2025-11-01 19:57:26 +01:00
Thomas Waldmann c4a9582fdf build binaries on github
also:

- speed up CI for PRs
- update README for binaries
2025-10-16 00:37:46 +02:00
Thomas Waldmann 3120f9cd1c fixed typos and grammar (AI)
this was done by Junie AI.
2025-09-23 14:56:23 +02:00
Thomas Waldmann 85e0e05f35 vagrant: add debian trixie box
currently still known as "testing",
but soon to be released.
2025-08-09 16:28:47 +02:00
Thomas Waldmann 0324395baf pyinstaller spec: avoid pkg_resources warning 2025-06-18 22:35:38 +02:00
Thomas Waldmann 63ff136dfe buzhash64: integrate into build 2025-06-10 22:44:48 +02:00
TW 31a1ac18c7 Merge pull request #8899 from ThomasWaldmann/fish-completions
fish: fix archive name completion
2025-06-09 19:21:11 +02:00
Thomas Waldmann f44b1742f5 Extract ChunkerFixed into a dedicated module under chunkers.
Moved the `ChunkerFixed` implementation from `chunker` to a new `fixed` module for better modularity. Updated imports and type hints.

Removed now empty chunkers.chunker module.
2025-06-04 23:48:50 +02:00
Thomas Waldmann 31494f200d Extract buzhash logic into a dedicated module under chunkers
Moved `buzhash` implementation from `chunker` to a new `buzhash` module for better separation of concerns. Updated imports, adjusted `setup.py` and build configuration accordingly. Removed deprecated `Chunker` definitions from `chunker.pyi`.
2025-06-04 22:57:03 +02:00
Thomas Waldmann a78c310b72 Split reader functionality into a separate module under chunkers package
Extracted the `reader` logic from `chunker` into a dedicated `reader` module to improve modularity and maintainability. Updated imports, references, and build configurations accordingly.
2025-06-04 22:40:39 +02:00
Thomas Waldmann bc86bd4bb0 Move chunker module to chunkers package
Refactor by relocating the `chunker` module under a new `chunkers` package, adjusting imports and file references accordingly.
2025-06-04 22:12:45 +02:00
Thomas Waldmann a1ba5c3c81 fish: fix archive name completion 2025-06-04 01:01:08 +02:00
TW 39b847a138 Merge pull request #8859 from ThomasWaldmann/pyupgrade-py310-plus
pyupgrade --py310-plus ./**/*.py
2025-05-20 23:29:58 +02:00
Thomas Waldmann c7765adf08 pyupgrade --py310-plus ./**/*.py 2025-05-20 22:05:13 +02:00
Thomas Waldmann a4761f9158 zsh: no barchive, add --repo 2025-05-20 21:28:46 +02:00
Thomas Waldmann 7e78aaf04d zsh fixes, remove repo-list caching 2025-05-20 21:08:09 +02:00
Thomas Waldmann ca87c60565 minor bash completion fixes 2025-05-20 21:05:38 +02:00
Thomas Waldmann 3196f490f3 zsh: add new commands and options to zsh completions 2025-05-19 21:03:11 +02:00
Thomas Waldmann 9116533ec3 fish: add new commands and options to fish completions 2025-05-19 20:30:52 +02:00
Thomas Waldmann 15d3408360 bash: add new commands and options to bash completions
Updated bash completions to include new commands such as `analyze`, `debug`, `repo-space`, `tag`, and `undelete`, along with their respective options. Fixed a typo in the `--upgrader` completions and improved completion handling for various commands.
2025-05-19 20:30:49 +02:00
Thomas Waldmann 3df7702519 tests: fix and enable windows CI, fixes #8728
thanks a lot to @sothix for helping with this!

removed pytest-forked, is not found anymore:
error: target not found: mingw-w64-ucrt-x86_64-python-pytest-forked

use a virtual env to avoid mixup of user with system packages.

remove old workaround for setuptools (SETUPTOOLS_USE_DISTUTILS: stdlib).

fix pip install

use --system-site-packages as a workaround for broken pip install python-cffi.

do not upgrade pip setuptools build wheel

use python -m pytest to use the one from the venv
2025-05-19 11:00:11 +02:00
Thomas Waldmann 9e6d90754e remove remainders of append-only support
Some features like append-only repositories rely on a server-side component
that enforces them (because that shall only be controllable server-side,
not client-side).

So, that can only work, if such a server-side component exists, which is the
case for borg 1.x ssh: repositories (but not for borg 1.x non-ssh: repositories).

For borg2, we currently have:
- fs repos
- sftp: repos
- rclone: repos (enabling many different cloud providers)
- s3/b3: repos
- ssh: repos using client/server rpc code similar as in borg 1.x

So, only for the last method we have a borg server-side process that could enforce some features, but not for any of the other repo types.

For append-only the current idea is that this should not be done within borg,
but solved by a missing repo object delete permission enforced by the storage.

borg create could then use credentials that miss permission to delete,
while borg compact would use credentials that include permission to delete.
2025-04-28 18:55:15 +02:00
Thomas Waldmann 48b39d878f remove remainders of quota support
Some features like repository quotas rely on a server-side component
that enforces them (because that shall only be controllable server-side,
not client-side).

So, that can only work, if such a server-side component exists, which is the
case for borg 1.x ssh: repositories (but not for borg 1.x non-ssh: repositories).

For borg2, we currently have:
- fs repos
- sftp: repos
- rclone: repos (enabling many different cloud providers)
- s3/b3: repos
- ssh: repos using client/server rpc code similar as in borg 1.x

So, only for the last method we have a borg server-side process that could enforce some features, but not for any of the other repo types.

For quotas the current idea is that this should not be done within borg,
but enforced by a storage specific quota implementation (like fs quota,
or quota of the cloud storage provider). borg could offer information
about overall repo space used, but would not enforce quotas within borg.
2025-04-28 16:57:30 +02:00
Thomas Waldmann c7fd43c576 msys2: use pyinstaller 6.11.1 2025-03-23 16:00:33 +01:00
Thomas Waldmann fdc882230e shell completions: adapt zsh for borg 2.0.0b13
I am not familiar with zsh completions, so I did only the easy stuff.

A lot of the more complex stuff is likely still broken, PR's welcome!
2024-11-05 17:16:38 +01:00
TW b553452911 Merge pull request #8484 from mrichtarsky/docs
Docs: Remove --bypass-lock, small changes regarding compression
2024-11-01 12:26:06 +01:00
Thomas Waldmann bd5060887c pyinstaller: add borghash to hidden imports 2024-10-31 22:19:30 +01:00
Thomas Waldmann 03596e3651 remove unused _hashindex.c, update setup.py
also the hash_sizes.py script, which was used for _hashindex.c.
2024-10-25 19:03:38 +02:00
Martin Richtarsky 411f6f3222 docs: Remove --bypass-lock 2024-10-22 08:44:56 +02:00
Thomas Waldmann f6f8c678e8 msys2: use pyinstaller 6.10.0 2024-10-15 19:06:34 +02:00
Thomas Waldmann e8dbcb3bfa msys2: install rclone 2024-10-15 19:05:27 +02:00
sothix f11dc50070 Pip Fix 2024-09-15 23:35:24 +10:00
Thomas Waldmann 04dfadbbd6 cli: rename r* commands to repo-*
also:
- adapt tests
- adapt BuildMan manpage generation
- adapt help strings / doc strings
- docs
2024-09-08 18:06:24 +02:00
Thomas Waldmann 0306ba9a63 get rid of the CacheSynchronizer
Lots of low-level code written back then to optimize runtime of some
functions.

We'll solve this differently by doing less stats, esp. if it is expensive to compute.
2024-09-07 22:00:33 +02:00
Thomas Waldmann 84e87239bc fix pypi repo name in upload script
it needs to be like this to support a ~/.pypirc like this,
containing a separate upload token for the borgbackup project:

[distutils]
index-servers =
    borgbackup
    ...

[borgbackup]
repository = https://upload.pypi.org/legacy/
username = __token__
password = pypi-...(token)...
2024-07-20 17:47:59 +02:00
Thomas Waldmann f4367d66d8 vagrant: darwin -> macos
Also: add macOS version number.
2024-07-19 14:15:15 +02:00
Thomas Waldmann 445dd69eba vagrant: adapt fetch-binaries script 2024-07-19 14:14:58 +02:00
Thomas Waldmann 2e05c234b6 BackupErrors get caught and give warning RCs
also: use more union operators rather than .union()
2024-02-15 18:15:10 +01:00