By default, rhai support for filtering snapshots (`--filter-fn`) is now
not compiled in, but the compile feature still exists.
In future we might remove it completely as we now have `filter-jq` with
similar possibilities.
Adds the possibility to compare two snapshots interactively.
From the interactive snapshots view, press `D` to get to the diff view.
If two snapshots are marked, this diffs the two marked snapshots. If one
snapshot is marked or selected, this diffs with its parent (if there is
one).
Alternatively, you can use `rustic diff -i` to select snapshots/paths
directly.
The PR also allows to recursively compute added/removed space for dirs
and subdirs using `s` (like in #1479)
This PR is breaking as it also changes the output format of the normal
`diff` command.
If no grouping is given, the json output now displays all snapshots
without artificial grouping.
Also, in this case, the group is not displayed in non-json output.
closes#1362
This PR extends the logging. For `backup`, `forget`, `prune` the stdout
output is now printed via an INFO log which allows to see this
information also in the log file.
Moreover, when using a log file, rustic now also logs the version and
the used command.
closes#1454closes#1080
Note: This does not **use** the latest rustic core, but makes the
necessary modifications to make it work with `rustic_core` after the
latest dependency updates.
In a complex program the cause of SIGPIPE is unclear, it may come from
socket writes, or even socket reads under some conditions, as well as on
writes to pipes. As rustic depends on third party libraries to perform
IO and handle sockets, it has little power to control the socket and
operation flags for all IO to ensure that SIGPIPE has a clear meaning.
Per a comment on #1326 the original intent was to catch a SIGPIPE from a
use case such as `command | rustic backup -` however this situation will
not create a SIGPIPE anyway, and if it did it would likely result in
incomplete data due to command exiting immediately after writing into
the pipe buffer, rather than after all pipe buffer data has been read.
The behavior of pipes in this case is to EOF after all writers have
completed and all data has been read.
The situation the other way around is different, such as `rustic backup
| command`, this would generate SIGPIPE when rustic writes to the pipe
after command has exited. This signal is however superfluous, and still
not terribly useful, as it is often more useful to handle the EPIPE that
will be returned from the write call, and gracefully cease operations,
in whatever form is required.
closes#1326
Bumps [zip](https://github.com/zip-rs/zip2) from 2.2.1 to 2.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zip-rs/zip2/releases">zip's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.0</h2>
<h3><!-- raw HTML omitted -->🚀 Features</h3>
<ul>
<li>Add support for NTFS extra field (<a
href="https://redirect.github.com/zip-rs/zip2/pull/279">#279</a>)</li>
</ul>
<h3><!-- raw HTML omitted -->🐛 Bug Fixes</h3>
<ul>
<li><em>(test)</em> Conditionalize a zip64 doctest (<a
href="https://redirect.github.com/zip-rs/zip2/pull/308">#308</a>)</li>
<li>fix failing tests, remove symlink loop check</li>
<li>Canonicalize output path to avoid false negatives</li>
<li>Symlink handling in stream extraction</li>
<li>Canonicalize output paths and symlink targets, and ensure they
descend from the destination</li>
</ul>
<h3><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h3>
<ul>
<li>Fix clippy and cargo fmt warnings (<a
href="https://redirect.github.com/zip-rs/zip2/pull/310">#310</a>)</li>
</ul>
<h2>v2.2.3</h2>
<h3><!-- raw HTML omitted -->🚜 Refactor</h3>
<ul>
<li>Change the inner structure of <code>DateTime</code> (<a
href="https://redirect.github.com/zip-rs/zip2/issues/267">#267</a>)</li>
</ul>
<h3><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h3>
<ul>
<li>cargo fix --edition</li>
</ul>
<h2>v2.2.2</h2>
<h3><!-- raw HTML omitted -->🐛 Bug Fixes</h3>
<ul>
<li>rewrite the EOCD/EOCD64 detection to fix extreme performance
regression (<a
href="https://redirect.github.com/zip-rs/zip2/issues/247">#247</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md">zip's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/zip-rs/zip2/compare/v2.2.3...v2.3.0">2.3.0</a>
- 2025-03-16</h2>
<h3><!-- raw HTML omitted -->🚀 Features</h3>
<ul>
<li>Add support for NTFS extra field (<a
href="https://redirect.github.com/zip-rs/zip2/pull/279">#279</a>)</li>
</ul>
<h3><!-- raw HTML omitted -->🐛 Bug Fixes</h3>
<ul>
<li><em>(test)</em> Conditionalize a zip64 doctest (<a
href="https://redirect.github.com/zip-rs/zip2/pull/308">#308</a>)</li>
<li>fix failing tests, remove symlink loop check</li>
<li>Canonicalize output path to avoid false negatives</li>
<li>Symlink handling in stream extraction</li>
<li>Canonicalize output paths and symlink targets, and ensure they
descend from the destination</li>
</ul>
<h3><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h3>
<ul>
<li>Fix clippy and cargo fmt warnings (<a
href="https://redirect.github.com/zip-rs/zip2/pull/310">#310</a>)</li>
</ul>
<h2><a
href="https://github.com/zip-rs/zip2/compare/v2.2.2...v2.2.3">2.2.3</a>
- 2025-02-26</h2>
<h3><!-- raw HTML omitted -->🚜 Refactor</h3>
<ul>
<li>Change the inner structure of <code>DateTime</code> (<a
href="https://redirect.github.com/zip-rs/zip2/issues/267">#267</a>)</li>
</ul>
<h3><!-- raw HTML omitted -->⚙️ Miscellaneous Tasks</h3>
<ul>
<li>cargo fix --edition</li>
</ul>
<h2><a
href="https://github.com/zip-rs/zip2/compare/v2.2.1...v2.2.2">2.2.2</a>
- 2024-12-16</h2>
<h3><!-- raw HTML omitted -->🐛 Bug Fixes</h3>
<ul>
<li>rewrite the EOCD/EOCD64 detection to fix extreme performance
regression (<a
href="https://redirect.github.com/zip-rs/zip2/issues/247">#247</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6eab5f5cc6"><code>6eab5f5</code></a>
chore: release v2.3.0 (<a
href="https://redirect.github.com/zip-rs/zip2/issues/300">#300</a>)</li>
<li><a
href="e4aee2050f"><code>e4aee20</code></a>
implement <code>ZipFile::options</code> + refactor options normalization
(<a
href="https://redirect.github.com/zip-rs/zip2/issues/305">#305</a>)</li>
<li><a
href="ea8a7bba24"><code>ea8a7bb</code></a>
fix(test): Conditionalize a zip64 doctest (<a
href="https://redirect.github.com/zip-rs/zip2/issues/308">#308</a>)</li>
<li><a
href="365c81a39f"><code>365c81a</code></a>
Use <code>xz2</code> crate instead of a custom implementation (<a
href="https://redirect.github.com/zip-rs/zip2/issues/306">#306</a>)</li>
<li><a
href="ae94b3452b"><code>ae94b34</code></a>
chore: Fix clippy and cargo fmt warnings (<a
href="https://redirect.github.com/zip-rs/zip2/issues/310">#310</a>)</li>
<li><a
href="a2e062f370"><code>a2e062f</code></a>
Merge commit from fork</li>
<li><a
href="0199ac2cb8"><code>0199ac2</code></a>
Simplify handling for symlink targets</li>
<li><a
href="977bb9479d"><code>977bb94</code></a>
fix failing tests, remove symlink loop check</li>
<li><a
href="3cb29e70d1"><code>3cb29e7</code></a>
Partial fix for tests</li>
<li><a
href="2182b07686"><code>2182b07</code></a>
Refactor</li>
<li>Additional commits viewable in <a
href="https://github.com/zip-rs/zip2/compare/v2.2.1...v2.3.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/rustic-rs/rustic/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>