Skip to content

feat!: Add support for multiple parents#427

Merged
aawsome merged 3 commits intomainfrom
multiple-parents
Dec 23, 2025
Merged

feat!: Add support for multiple parents#427
aawsome merged 3 commits intomainfrom
multiple-parents

Conversation

@aawsome
Copy link
Member

@aawsome aawsome commented Sep 9, 2025

To solve rustic-rs/rustic#493 it will be necessary to add support for multiple parents.

This PR adds this support:

  • The parent option can be now given multiple times
  • In the SnapshotFile also mutliple parent ids can now be saved
  • All trees of all parent snapshots are processed and a suitable entry of any of the parents is taken

@codecov
Copy link

codecov bot commented Sep 9, 2025

Codecov Report

❌ Patch coverage is 64.78873% with 25 lines in your changes missing coverage. Please review.
✅ Project coverage is 43.8%. Comparing base (2b8c4fd) to head (242beeb).
⚠️ Report is 17 commits behind head on main.

Files with missing lines Patch % Lines
crates/core/src/commands/backup.rs 57.5% 14 Missing ⚠️
crates/core/src/archiver/parent.rs 71.4% 10 Missing ⚠️
crates/core/src/repofile/snapshotfile.rs 66.6% 1 Missing ⚠️
Additional details and impacted files
Files with missing lines Coverage Δ
crates/core/tests/integration.rs 81.4% <ø> (-4.3%) ⬇️
crates/core/src/repofile/snapshotfile.rs 56.6% <66.6%> (-0.4%) ⬇️
crates/core/src/archiver/parent.rs 63.5% <71.4%> (-1.8%) ⬇️
crates/core/src/commands/backup.rs 54.3% <57.5%> (+6.8%) ⬆️

... and 20 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@simonsan
Copy link
Contributor

simonsan commented Nov 8, 2025

Didn't thoroughly review, only read over it, but test seems to pass and in general looks good. 🖖

@aawsome aawsome merged commit a5315cf into main Dec 23, 2025
24 checks passed
@aawsome aawsome deleted the multiple-parents branch December 23, 2025 12:35
@rustic-release-plz rustic-release-plz bot mentioned this pull request Dec 21, 2025
aawsome added a commit that referenced this pull request Jan 5, 2026
follow-up to #427.

We now use `parents` in the toml and additionally allow `latest` or
`latest~N` as parents.
github-merge-queue bot pushed a commit that referenced this pull request Feb 11, 2026
## 🤖 New release

* `rustic_core`: 0.9.0 -> 0.10.0 (✓ API compatible changes)
* `rustic_backend`: 0.5.4 -> 0.6.0 (✓ API compatible changes)
* `rustic_testing`: 0.3.4 -> 0.4.0 (✓ API compatible changes)
* `rustic_config`: 0.2.3 -> 0.2.4 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

## `rustic_core`

<blockquote>

##
[0.10.0](rustic_core-v0.9.0...rustic_core-v0.10.0)
- 2026-02-09

### Added

- [**breaking**] Add support for batch warmup
([#438](#438))
- [**breaking**] Add masterkey as credential option
([#468](#468))
- improve copy algorithm
([#464](#464))
- [**breaking**] More rewrite features
([#465](#465))
- [**breaking**] Add rewrite command
([#462](#462))
- [**breaking**] extend LocalSourceSaveOptions
([#461](#461))
- [**breaking**] improve restore algorithm
([#453](#453))
- [**breaking**] change ignore-devid to with-devid
([#460](#460))
- Use Timestamp in index
([#458](#458))
- Optimize prune rewrite
([#448](#448))
- [**breaking**] Add support for multiple parents
([#427](#427))

### Fixed

- fix clippy lints
([#473](#473))
- Use jiff everywhere
([#467](#467))
- fix rewrite file count
([#466](#466))
- Return error if too few snapshots for latest~N
([#459](#459))
- Use early-delete-index only if instant-delete is selected
([#457](#457))
- fix clap runtime errors for parent options
([#456](#456))
- Use parents instead of parent; allow latest
([#455](#455))
- improve error handling for missing UID/GID name
([#454](#454))
- fix clippy lints
([#449](#449))

### Other

- update dependencies
([#475](#475))
- [**breaking**] Refactor snapshot grouping
([#474](#474))
- [**breaking**] Simplify Repository status
([#472](#472))
- [**breaking**] Simplify Progress
([#469](#469))
- update MSRV to 1.88.0
([#471](#471))
- FreeBSD build
([#440](#440))
- refactor! use jiff instead of chrono
([#452](#452))
</blockquote>

## `rustic_backend`

<blockquote>

##
[0.6.0](rustic_backend-v0.5.4...rustic_backend-v0.6.0)
- 2026-02-09

### Added

- [**breaking**] Add support for batch warmup
([#438](#438))
- *(backend/opendal)* include scheme in location() and bump opendal to
0.55.0 ([#446](#446))

### Fixed

- fix clippy lints
([#473](#473))
- Use jiff everywhere
([#467](#467))

### Other

- update dependencies
([#475](#475))
- update MSRV to 1.88.0
([#471](#471))
</blockquote>

## `rustic_testing`

<blockquote>

##
[0.4.0](rustic_testing-v0.3.4...rustic_testing-v0.4.0)
- 2026-02-09

### Added

- [**breaking**] Add support for batch warmup
([#438](#438))
</blockquote>

## `rustic_config`

<blockquote>

##
[0.2.4](rustic_config-v0.2.3...rustic_config-v0.2.4)
- 2026-02-09

### Other

- update MSRV to 1.88.0
([#471](#471))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: rustic-release-plz[bot] <182542030+rustic-release-plz[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants