Commit graph

140 commits

Author SHA1 Message Date
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
Thomas Waldmann
5168a97782
extend errorlist script to warnings, update docs 2024-02-14 02:04:44 +01:00
Thomas Waldmann
34bbce8e71
scripts/errorlist.py: improve error list docs generation
- also output modern rc and traceback yes/no
- recursive list of Error subclasses
2024-02-13 19:56:32 +01:00
Thomas Waldmann
8eba627b29
scripts: make.py clean implementation 2024-02-09 17:37:46 +01:00
Thomas Waldmann
4d424de69e
scripts: update docs about make.py 2024-02-09 17:37:44 +01:00
Thomas Waldmann
59bca06630
scripts: rename gendocs.py to make.py 2024-02-09 17:37:43 +01:00
Thomas Waldmann
b64f6e3335
scripts/gendocs.py: make it work
remove unused html_write function

gendocs: update developer docs
2024-02-09 17:37:38 +01:00
Thomas Waldmann
b34a99f337
git mv setup_docs.py scripts/gendocs.py 2024-02-09 02:53:17 +01:00
Thomas Waldmann
cb62981ae7
add script for fetching borg binaries from VMs, fixes #7989 2024-01-10 22:33:44 +01:00
Thomas Waldmann
723994a2f1
use pyinstaller 6.3.0 2024-01-02 20:33:34 +01:00
Thomas Waldmann
1a544845a2
use less setup.py, use pip and build
todo: clean clean2 build_usage build_man
2024-01-02 19:50:59 +01:00
Thomas Waldmann
66eb086c4a
fix msys build
forward port to get code in sync with 1.4-maint.

use "pip install -e ." before invoking pyinstaller, so we have
the _version.py built by setuptools_scm and also it compiled the
extension modules, so pyinstaller can pick them up.

msys2 hack:

https://stackoverflow.com/questions/76079590/error-plat-name-must-be-one-of-win32-win-amd64-win-arm32-win-arm6
2024-01-02 19:46:48 +01:00