Michael Eischer
cb1d66a398
add changelog go version bump
2026-10-17 22:57:11 +02:00
Michael Eischer
5d745e2ead
windows: use os.OpenFile with O_FILE_FLAG_* instead of low-level API
2026-10-17 22:57:11 +02:00
Michael Eischer
2497d99f9f
fix linter error
2026-10-17 22:57:11 +02:00
Michael Eischer
35f15c398a
apply go fix ./...
2026-10-17 22:57:11 +02:00
Michael Eischer
a9d74f178e
bump minimum go version to 1.26
2026-10-17 22:37:36 +02:00
Michael Eischer
9d17700830
update golangci-lint ignore
2026-09-20 22:01:08 +02:00
Michael Eischer
1cce3790f4
gofmt
2026-09-20 21:28:55 +02:00
Michael Eischer
1765e36f95
CI: Add go 1.27
2026-09-20 21:28:40 +02:00
Michael Eischer
f215365af9
Apply go fix -waitgroup ./...
2026-07-22 22:27:21 +02:00
Michael Eischer
14e523a1d9
Apply go fix -testingcontext ./...
2026-07-22 22:27:15 +02:00
Michael Eischer
58f92708c2
Apply go fix -stringsseq ./...
2026-07-22 22:27:07 +02:00
Michael Eischer
31e96f4ec9
Apply go fix -stringsbuilder ./...
2026-07-22 22:26:50 +02:00
Michael Eischer
a2cb015591
Apply go fix -slicescontains ./...
2026-07-22 22:26:33 +02:00
Michael Eischer
e2495b72bb
Apply go fix -reflecttypefor ./...
2026-07-22 22:26:27 +02:00
Michael Eischer
2c169edad4
Apply go fix -rangeint ./...
2026-07-22 22:26:19 +02:00
Michael Eischer
fb36a7f59b
Apply go fix -omitzero ./...
2026-07-22 22:26:07 +02:00
Michael Eischer
8ed263c6dd
Apply go fix -minmax ./...
2026-07-22 22:25:56 +02:00
Michael Eischer
0e4f288e83
Apply go fix -mapsloop ./...
2026-07-22 22:25:47 +02:00
Michael Eischer
da4d8f5851
Apply go fix -fmtappendf ./...
2026-07-22 22:25:26 +02:00
Michael Eischer
32e9869cc8
Apply go fix -any ./...
2026-07-22 22:25:18 +02:00
Michael Eischer
d8ef26afa4
Merge branch 'patch-release'
2026-07-05 16:27:43 +02:00
Michael Eischer
8cc69782b5
repository: expose ZeroChunk via chunker factory
2026-06-27 22:23:59 +02:00
Michael Eischer
ccb828e87b
repository: add ChunkerFactory and decouple archiver from chunker
...
Introduce restic.Chunker and ChunkerFactory interfaces with a
repository-backed implementation. The archiver obtains chunkers via
ChunkerFactory() from the repository.
2026-06-27 22:13:41 +02:00
Michael Eischer
70a45791b2
archiver: switch file saver from Chunker to BaseChunker
...
Update the chunker dependency. Move the chunk memory handling into the
fileSaver. This minimizes the logic required in a chunker
implementation.
readNextChunk is a direct derivative of Chunker.Next.
2026-06-27 22:13:41 +02:00
Michael Eischer
804ff4bc95
find: add test for listing blobs from corrupt pack files
2026-06-26 22:16:55 +02:00
Michael Eischer
9670cd7459
find: fix fallback to index if pack cannot be listed
...
`find` would only look up completely missing pack files in the index. A
still existing but broken pack file would result in an error.
2026-06-26 22:16:55 +02:00
Michael Eischer
634e9b2411
find: check blobIDs/treeIDs presence by length
...
Depending on the code path, the map could be initialized but stay empty.
2026-06-26 21:46:30 +02:00
Michael Eischer
f058670219
polish changelogs
2026-06-23 19:55:12 +02:00
Michael Eischer
8ef295e2f5
snapshots: revert default --lastest behavior to pre-0.19.0
...
the changed behavior now only applies when using `--group-by`.
2026-06-23 19:15:14 +02:00
Michael Eischer
bc714d1864
snapshots: cleanup handling of deprecated --last option
2026-06-23 19:15:14 +02:00
Michael Eischer
debf95f58d
backend/sftp: fix removing files on windows sftp
2026-06-23 19:14:54 +02:00
Michael Eischer
27c44c11aa
backend/sftp: fix error reporting of Save method
2026-06-23 19:14:54 +02:00
Michael Eischer
8ee674da55
repository: show correct error if zstd decoder cannot be initialized
2026-06-23 19:13:39 +02:00
Michael Eischer
c21f0fabc6
selfupdate: improve error handling
2026-06-23 19:13:39 +02:00
Michael Eischer
6aaa2eace4
prune/repair pack: document ignored errors
2026-06-23 19:13:39 +02:00
Michael Eischer
f2d614db56
backend/util: fix errorhandling in DefaultDelete test helper
2026-06-23 19:13:39 +02:00
Michael Eischer
ed655b476a
backend/sftp: fix file handle leak if chmod for a file fails
2026-06-23 19:13:39 +02:00
Michael Eischer
80f694b32e
backend/rest: correctly close body on out of bounds read
2026-06-23 19:13:39 +02:00
Michael Eischer
eaa835becd
backend/b2: correctly close file if too short
2026-06-23 19:13:39 +02:00
Michael Eischer
7aa82d68b4
forget: fix error handling if snapshot key cannot be marshaled
2026-06-23 19:13:39 +02:00
Michael Eischer
c08e7fd956
mount: unify mountpoint validation error messages
2026-06-23 19:08:36 +02:00
Michael Eischer
d07bcd50da
mount: factor out mountpoint validation into helper
2026-06-23 19:08:36 +02:00
Michael Eischer
5967f9a894
upgrade compress library
2026-06-23 19:07:56 +02:00
Michael Eischer
1733dd56b9
repository: fix zero-sized blobs in v2 repos
2026-06-23 19:07:56 +02:00
Michael Eischer
369da8a770
snapshots: revert default --lastest behavior to pre-0.19.0
...
the changed behavior now only applies when using `--group-by`.
2026-06-21 15:28:22 +02:00
Michael Eischer
9f84c80056
snapshots: cleanup handling of deprecated --last option
2026-06-21 15:28:22 +02:00
Michael Eischer
6070462465
backup: move options finalization to BackupOptions.Finalize
2026-06-21 15:28:22 +02:00
Michael Eischer
8f00b335b4
rclone/fs: parallelize tests
2026-06-20 22:43:03 +02:00
Michael Eischer
c6a064b68b
mount: disable debug log for test
...
I don't recall any recent problems with that test.
2026-06-20 22:04:07 +02:00
Michael Eischer
8d191c19a5
archiver: decrease sleeps for TestFileChanged test
...
Modern filesystems provide microsecond granularity or better. The old
special case for macOS is removed as Go 1.25 (minimum for restic)
requires at least macOS 12, which uses APFS instead of the old HFS+.
2026-06-20 21:55:46 +02:00
Michael Eischer
d5267f03e0
use fastest compression in integration tests
2026-06-20 20:00:17 +02:00
Michael Eischer
5683224a3c
layout: skip creation of pack subdirectories in integration tests
...
Each time a local backend is created, the local backend also creates all
shard subdirectories. For the integration tests this has the downside
that this results in ~120 (number of test) * 256 (number of directories)
= 30k directories that are created unnecessarily. This significantly
slows down test execution and cleanup.
2026-06-20 20:00:17 +02:00
Michael Eischer
71064fac10
mount: decrease sleep to speed up test
2026-06-20 20:00:17 +02:00
Michael Eischer
52cde35aea
try deleting a directory before resetting the readonly status in tests
2026-06-20 20:00:17 +02:00
Michael Eischer
f394723aa2
inject crypto keys for integration tests
2026-06-20 20:00:17 +02:00
Michael Eischer
072305c5b3
repository: run version sub-tests of TestAllVersions in parallel
...
TestRepositoryIncrementalIndex no longer modified index.Full as this
modified global state and also had no effect on the test result.
2026-06-20 19:59:37 +02:00
Michael Eischer
a1420ea6c7
repository: use separate rand instance per test
...
Use separate instances to prevent data races when executing tests in
parallel.
2026-06-20 19:50:10 +02:00
Michael Eischer
a3be3bd9e1
backend/test: gradually increase timeout for TestListCancel to speed up fast backends
2026-06-20 19:46:22 +02:00
Michael Eischer
b24d05bcb4
skip key decryption in tests
2026-06-20 19:46:22 +02:00
Michael Eischer
c021b8cde0
decrease test data sizes
2026-06-20 19:46:22 +02:00
Michael Eischer
18e5c446e0
data/fs: faster comparison in tests
2026-06-20 19:46:22 +02:00
Michael Eischer
f91afb2fa8
repository: run TestPruneSmall in parallel to other tests
2026-06-20 19:46:22 +02:00
Michael Eischer
2148508050
repository/checker: speed up test repo creation
...
data.TestCreateSnapshot is much faster than archiver.TestSnapshot
2026-06-20 19:46:22 +02:00
Michael Eischer
37e8f50aeb
repository: decrease test data size for streamPack
2026-06-20 19:46:22 +02:00
Michael Eischer
7e5eaf1ead
crypto: decrease parameters for calibrate test
2026-06-20 19:46:22 +02:00
Michael Eischer
aae0985673
index: decrease depth of test repos
2026-06-20 19:46:22 +02:00
Michael Eischer
f9d953d4cd
index: test ForAllIndex with generated repo
2026-06-20 19:46:22 +02:00
Michael Eischer
69a3ba5b33
index: speed up oversized test data generation
2026-06-20 19:46:22 +02:00
Michael Eischer
c183fe2035
restore: speed up test data generation in newTestRepo
2026-06-20 19:46:22 +02:00
Michael Eischer
1174e97b30
restic: speed up repository config initialization in tests
...
Avoid redundant polynomial generation, which takes a millisecond or so.
2026-06-20 19:46:22 +02:00
Michael Eischer
440d925467
repository: default to fastest compression in tests
2026-06-20 19:46:22 +02:00
Michael Eischer
9ab5fc59c2
restic: split FileType for backend.FileType
...
Equality of constants is enforced via internal/repository/filetype.go
using compile time checks.
2026-06-20 19:15:40 +02:00
Michael Eischer
6c509f7ac1
Correctly pair backend/restic.FileType with APIs
...
Use backend.FileType to interact with the backend. And restic.FileType
to interact with the repository.
2026-06-20 19:15:40 +02:00
Michael Eischer
2f31cde517
internal/restorer: invert dependency direction to ui/restorer
...
The restorer imported ui/restorer which leaks ui logic into the restorer
core. Swap the direction by letting the restorer use a ProgressReporter
interface + associated constants.
2026-06-20 17:49:20 +02:00
Michael Eischer
5cd39d01c1
internal/data: extract HardlinkIndex from restorer
...
The HardlinkIndex is also used by `cmd_stats`, thus place it in a shared
package.
2026-06-20 17:49:20 +02:00
Michael Eischer
61708772a2
mount: use existing HasPathPrefix helper
...
replaces the custom isInside helper to check path nesting
2026-06-20 17:49:20 +02:00
Michael Eischer
d9d54a505e
restic: move Printer interface from internal/ui/progress
...
Move Printer and NewNoopPrinter to internal/restic so repository does
not have to import the ui packages.
2026-06-20 17:49:20 +02:00
Michael Eischer
0f4236cb39
repository: return unlock func from LockRepo
...
Drop the Unlocker interface and return the unlock callback directly
from LockRepo, simplifying callers that only need to defer unlock().
2026-06-20 17:48:35 +02:00
Michael Eischer
4d1b9cef63
internal/fileio: extract low-level file I/O from internal/fs
...
Move TempFile and PreallocateFile into internal/fileio. internal/fs
primarily focuses on converting between data.Node and the actual
filesystem state. Extract the two methods to not pull in unnecessary
dependencies.
2026-06-20 17:48:35 +02:00
Michael Eischer
203e595ccb
backend/sftp: fix removing files on windows sftp
2026-06-19 23:23:01 +02:00
Michael Eischer
6c67a095dc
backend/sftp: fix error reporting of Save method
2026-06-19 23:09:59 +02:00
Michael Eischer
1a9decf03e
repository: show correct error if zstd decoder cannot be initialized
2026-06-14 16:52:40 +02:00
Michael Eischer
718f09e02d
selfupdate: improve error handling
2026-06-14 16:51:56 +02:00
Michael Eischer
82708ff7f7
prune/repair pack: document ignored errors
2026-06-14 16:51:56 +02:00
Michael Eischer
18c47c5bf9
backend/util: fix errorhandling in DefaultDelete test helper
2026-06-14 16:40:09 +02:00
Michael Eischer
faea0d677a
backend/sftp: fix file handle leak if chmod for a file fails
2026-06-14 16:39:42 +02:00
Michael Eischer
ae8fdb08fa
backend/rest: correctly close body on out of bounds read
2026-06-14 16:38:54 +02:00
Michael Eischer
5c8c048c1a
backend/b2: correctly close file if too short
2026-06-14 16:38:21 +02:00
Michael Eischer
6b88b072e0
forget: fix error handling if snapshot key cannot be marshaled
2026-06-14 16:37:58 +02:00
Michael Eischer
406dec29a7
repository: remove redundant mutex in checkForOtherLocks
...
forAllLocks already serializes the callback calls. Still has to create a
copy of checkedIDs to prevent a data race between forAllLocks and the
callback.
2026-06-13 21:37:24 +02:00
Michael Eischer
6fe10a72eb
repository: drop mutex from lockHandle
2026-06-13 21:37:06 +02:00
Michael Eischer
1a6d43286a
repository: comment cleanups
2026-06-13 21:36:36 +02:00
Michael Eischer
151903d4d4
repository: fix goroutine leak due to delayedCancelContext in tests
2026-06-13 21:35:51 +02:00
Michael Eischer
b86568b790
repository: merge Unlocker and lockContext
2026-06-13 21:35:41 +02:00
Michael Eischer
a5f3256626
repository: partially deduplicate refresh and refreshStaleLock
2026-06-13 21:33:58 +02:00
Michael Eischer
5989671f87
repository: deduplicate error handling in checkForOtherLocks
2026-06-13 21:33:43 +02:00
Michael Eischer
b7f3a1367a
repository: add SIGHUP handler only on Unix systems
2026-06-13 21:33:27 +02:00
Michael Eischer
4838b0ae3e
repository: cleanup naming of lockCtx
2026-06-13 21:33:19 +02:00
Michael Eischer
c87da70af9
repository: separate Lock in-repository from lock handle
...
Reduce Lock to a pure data transfer object and move the logic to
lockHandle.
2026-06-13 21:33:03 +02:00
Michael Eischer
81b6414c55
repository: hide Lock methods
...
Unexport lock file methods except String. Lock file operations are only
used within the repository package.
2026-06-13 21:32:13 +02:00