1
1
mirror of https://github.com/Byron/gitoxide synced 2025-10-05 16:42:40 +02:00

14605 Commits

Author SHA1 Message Date
dependabot[bot]
9365cc3ae8 Merge pull request #2202 from GitoxideLabs/dependabot/cargo/cargo-4a7155215a 2025-10-02 17:31:59 +00:00
Eliah Kagan
6f19267a03 Keep showing debug representation of paths in gitoxide-core
Where this was done already, in `bail!` and `anyhow!`.

A newly enforced clippy lint warns about this, making the good
point that the debug representation can change in the future. But
the display representation it recommends using is less suitable in
these places, because it can result in more ambiguous output due to
the absence of quoting and escaping.

(In some cases, it seems like the display representation could
slightly exacerbate CVE-2024-43785 / #1534, but using the debug
representation on these two macro calls is peripheral to the cases
of greatest concern, and this doesn't really mitigate that.)

The clippy lint being suppressed here in two specific places is:
https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting
2025-10-02 12:57:06 -04:00
Eliah Kagan
f4c37c0003 Thanks clippy
This fixes new clippy errors about missed opportunities to place
single variable names inside a format string rather than as
separate arguments.
2025-10-02 12:57:06 -04:00
Eliah Kagan
d58a7c1d31 Bump some stuff Dependabot missed
By running `cargo update`.

(It looks like holding back `getrandom`, as included in #2201, does
not enable Dependabot to cover all the transitive dependencies that
`cargo update` can update in its PRs.)
2025-10-02 12:57:01 -04:00
dependabot[bot]
838ff95cca Bump the cargo group across 1 directory with 64 updates
Bumps the cargo group with 46 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.99` | `1.0.100` |
| [clap](https://github.com/clap-rs/clap) | `4.5.46` | `4.5.48` |
| [clap_complete](https://github.com/clap-rs/clap) | `4.5.57` | `4.5.58` |
| [tracing-forest](https://github.com/QnnOkabayashi/tracing-forest) | `0.1.6` | `0.2.0` |
| [serde_derive](https://github.com/serde-rs/serde) | `1.0.219` | `1.0.228` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.16` | `2.0.17` |
| [memchr](https://github.com/BurntSushi/memchr) | `2.7.5` | `2.7.6` |
| [bitflags](https://github.com/bitflags/bitflags) | `2.9.3` | `2.9.4` |
| [libc](https://github.com/rust-lang/libc) | `0.2.175` | `0.2.176` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.21.0` | `3.23.0` |
| [bytesize](https://github.com/bytesize-rs/bytesize) | `2.0.1` | `2.1.0` |
| [rustix](https://github.com/bytecodealliance/rustix) | `1.0.8` | `1.1.2` |
| [quote](https://github.com/dtolnay/quote) | `1.0.40` | `1.0.41` |
| [trybuild](https://github.com/dtolnay/trybuild) | `1.0.110` | `1.0.111` |
| [windows-sys](https://github.com/microsoft/windows-rs) | `0.60.2` | `0.61.1` |
| [windows](https://github.com/microsoft/windows-rs) | `0.61.3` | `0.62.1` |
| [regex](https://github.com/rust-lang/regex) | `1.11.2` | `1.11.3` |
| [insta](https://github.com/mitsuhiko/insta) | `1.43.1` | `1.43.2` |
| [async-io](https://github.com/smol-rs/async-io) | `2.5.0` | `2.6.0` |
| [fs-err](https://github.com/andrewhickman/fs-err) | `3.1.1` | `3.1.2` |
| [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.37.0` | `0.37.2` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.143` | `1.0.145` |
| [zip](https://github.com/zip-rs/zip2) | `4.6.0` | `5.1.1` |
| [anstyle](https://github.com/rust-cli/anstyle) | `1.0.11` | `1.0.13` |
| [aws-lc-rs](https://github.com/aws/aws-lc-rs) | `1.13.3` | `1.14.1` |
| [backtrace](https://github.com/rust-lang/backtrace-rs) | `0.3.75` | `0.3.76` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.35` | `1.2.39` |
| [errno](https://github.com/lambda-fairy/rust-errno) | `0.3.13` | `0.3.14` |
| [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.16` | `0.1.17` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.11.0` | `2.11.4` |
| libredox | `0.1.9` | `0.1.10` |
| [log](https://github.com/rust-lang/log) | `0.4.27` | `0.4.28` |
| [polling](https://github.com/smol-rs/polling) | `3.10.0` | `3.11.0` |
| [rustls](https://github.com/rustls/rustls) | `0.23.31` | `0.23.32` |
| [schannel](https://github.com/steffengy/schannel-rs) | `0.1.27` | `0.1.28` |
| [security-framework-sys](https://github.com/kornelski/rust-security-framework) | `2.14.0` | `2.15.0` |
| [serde_spanned](https://github.com/toml-rs/toml) | `1.0.0` | `1.0.2` |
| [tokio-rustls](https://github.com/rustls/tokio-rustls) | `0.26.2` | `0.26.4` |
| [toml](https://github.com/toml-rs/toml) | `0.9.5` | `0.9.7` |
| [typenum](https://github.com/paholg/typenum) | `1.18.0` | `1.19.0` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident) | `1.0.18` | `1.0.19` |
| [winapi-util](https://github.com/BurntSushi/winapi-util) | `0.1.10` | `0.1.11` |
| [wit-bindgen](https://github.com/bytecodealliance/wit-bindgen) | `0.45.0` | `0.45.1` |
| [xattr](https://github.com/Stebalien/xattr) | `1.5.1` | `1.6.1` |
| [zerocopy](https://github.com/google/zerocopy) | `0.8.26` | `0.8.27` |
| [zeroize](https://github.com/RustCrypto/utils) | `1.8.1` | `1.8.2` |



Updates `anyhow` from 1.0.99 to 1.0.100
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.99...1.0.100)

Updates `clap` from 4.5.46 to 4.5.48
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.46...clap_complete-v4.5.48)

Updates `clap_complete` from 4.5.57 to 4.5.58
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.57...clap_complete-v4.5.58)

Updates `tracing-forest` from 0.1.6 to 0.2.0
- [Commits](https://github.com/QnnOkabayashi/tracing-forest/commits)

Updates `serde_derive` from 1.0.219 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.219...v1.0.228)

Updates `thiserror` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.16...2.0.17)

Updates `serde` from 1.0.219 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.219...v1.0.228)

Updates `memchr` from 2.7.5 to 2.7.6
- [Commits](https://github.com/BurntSushi/memchr/compare/2.7.5...2.7.6)

Updates `bitflags` from 2.9.3 to 2.9.4
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4)

Updates `libc` from 0.2.175 to 0.2.176
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.176/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.175...0.2.176)

Updates `tempfile` from 3.21.0 to 3.23.0
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.21.0...v3.23.0)

Updates `bytesize` from 2.0.1 to 2.1.0
- [Release notes](https://github.com/bytesize-rs/bytesize/releases)
- [Changelog](https://github.com/bytesize-rs/bytesize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bytesize-rs/bytesize/compare/bytesize-v2.0.1...bytesize-v2.1.0)

Updates `rustix` from 1.0.8 to 1.1.2
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGES.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v1.0.8...v1.1.2)

Updates `quote` from 1.0.40 to 1.0.41
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.40...1.0.41)

Updates `trybuild` from 1.0.110 to 1.0.111
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.110...1.0.111)

Updates `windows-sys` from 0.60.2 to 0.61.1
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `windows` from 0.61.3 to 0.62.1
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `regex` from 1.11.2 to 1.11.3
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.11.2...1.11.3)

Updates `insta` from 1.43.1 to 1.43.2
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.43.1...1.43.2)

Updates `async-io` from 2.5.0 to 2.6.0
- [Release notes](https://github.com/smol-rs/async-io/releases)
- [Changelog](https://github.com/smol-rs/async-io/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/async-io/compare/v2.5.0...v2.6.0)

Updates `fs-err` from 3.1.1 to 3.1.2
- [Changelog](https://github.com/andrewhickman/fs-err/blob/main/CHANGELOG.md)
- [Commits](https://github.com/andrewhickman/fs-err/commits/3.1.2)

Updates `sysinfo` from 0.37.0 to 0.37.2
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.37.0...v0.37.2)

Updates `serde_json` from 1.0.143 to 1.0.145
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.143...v1.0.145)

Updates `zip` from 4.6.0 to 5.1.1
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v4.6.0...v5.1.1)

Updates `anstyle` from 1.0.11 to 1.0.13
- [Commits](https://github.com/rust-cli/anstyle/compare/v1.0.11...v1.0.13)

Updates `aws-lc-rs` from 1.13.3 to 1.14.1
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/v1.13.3...v1.14.1)

Updates `aws-lc-sys` from 0.30.0 to 0.32.2
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/aws-lc-sys/v0.30.0...aws-lc-sys/v0.32.2)

Updates `backtrace` from 0.3.75 to 0.3.76
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Changelog](https://github.com/rust-lang/backtrace-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.75...backtrace-v0.3.76)

Updates `bindgen` from 0.69.5 to 0.72.1
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/v0.72.1/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.69.5...v0.72.1)

Updates `cc` from 1.2.35 to 1.2.39
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.35...cc-v1.2.39)

Updates `clap_builder` from 4.5.46 to 4.5.48
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.46...v4.5.48)

Updates `clap_derive` from 4.5.45 to 4.5.47
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.45...v4.5.47)

Updates `errno` from 0.3.13 to 0.3.14
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/commits)

Updates `find-msvc-tools` from 0.1.0 to 0.1.2
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/0.1.0...find-msvc-tools-v0.1.2)

Updates `gimli` from 0.31.1 to 0.32.3
- [Changelog](https://github.com/gimli-rs/gimli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/gimli/compare/0.31.1...0.32.3)

Updates `hyper-util` from 0.1.16 to 0.1.17
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.16...v0.1.17)

Updates `indexmap` from 2.11.0 to 2.11.4
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.11.0...2.11.4)

Updates `libredox` from 0.1.9 to 0.1.10

Updates `linux-raw-sys` from 0.4.15 to 0.11.0
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.15...v0.11.0)

Updates `log` from 0.4.27 to 0.4.28
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.27...0.4.28)

Updates `object` from 0.36.7 to 0.37.3
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.7...0.37.3)

Updates `polling` from 3.10.0 to 3.11.0
- [Release notes](https://github.com/smol-rs/polling/releases)
- [Changelog](https://github.com/smol-rs/polling/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/polling/compare/v3.10.0...v3.11.0)

Updates `regex-automata` from 0.4.10 to 0.4.11
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/commits)

Updates `rustc-hash` from 1.1.0 to 2.1.1
- [Changelog](https://github.com/rust-lang/rustc-hash/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rustc-hash/commits/v2.1.1)

Updates `rustls` from 0.23.31 to 0.23.32
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.31...v/0.23.32)

Updates `rustls-webpki` from 0.103.4 to 0.103.7
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.4...v/0.103.7)

Updates `schannel` from 0.1.27 to 0.1.28
- [Release notes](https://github.com/steffengy/schannel-rs/releases)
- [Commits](https://github.com/steffengy/schannel-rs/compare/v0.1.27...v0.1.28)

Updates `security-framework-sys` from 2.14.0 to 2.15.0
- [Commits](https://github.com/kornelski/rust-security-framework/commits)

Updates `serde_spanned` from 1.0.0 to 1.0.2
- [Commits](https://github.com/toml-rs/toml/compare/serde_spanned-v1.0.0...serde_spanned-v1.0.2)

Updates `tokio-rustls` from 0.26.2 to 0.26.4
- [Release notes](https://github.com/rustls/tokio-rustls/releases)
- [Commits](https://github.com/rustls/tokio-rustls/compare/v/0.26.2...v/0.26.4)

Updates `toml` from 0.9.5 to 0.9.7
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.9.5...toml-v0.9.7)

Updates `toml_datetime` from 0.7.0 to 0.7.2
- [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v0.7.0...toml_datetime-v0.7.2)

Updates `toml_parser` from 1.0.2 to 1.0.3
- [Commits](https://github.com/toml-rs/toml/compare/toml_parser-v1.0.2...toml_parser-v1.0.3)

Updates `toml_writer` from 1.0.2 to 1.0.3
- [Commits](https://github.com/toml-rs/toml/compare/toml_writer-v1.0.2...toml_writer-v1.0.3)

Updates `typenum` from 1.18.0 to 1.19.0
- [Release notes](https://github.com/paholg/typenum/releases)
- [Changelog](https://github.com/paholg/typenum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/paholg/typenum/compare/v1.18.0...v1.19.0)

Updates `unicode-ident` from 1.0.18 to 1.0.19
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.18...1.0.19)

Updates `winapi-util` from 0.1.10 to 0.1.11
- [Commits](https://github.com/BurntSushi/winapi-util/compare/0.1.10...0.1.11)

Updates `windows-implement` from 0.60.0 to 0.60.1
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `windows-interface` from 0.59.1 to 0.59.2
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `wit-bindgen` from 0.45.0 to 0.45.1
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases)
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.45.0...v0.45.1)

Updates `xattr` from 1.5.1 to 1.6.1
- [Release notes](https://github.com/Stebalien/xattr/releases)
- [Commits](https://github.com/Stebalien/xattr/compare/v1.5.1...v1.6.1)

Updates `zerocopy` from 0.8.26 to 0.8.27
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.26...v0.8.27)

Updates `zerocopy-derive` from 0.8.26 to 0.8.27
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.8.26...v0.8.27)

Updates `zeroize` from 1.8.1 to 1.8.2
- [Commits](https://github.com/RustCrypto/utils/compare/zeroize-v1.8.1...zeroize-v1.8.2)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.100
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: clap
  dependency-version: 4.5.48
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: clap_complete
  dependency-version: 4.5.58
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tracing-forest
  dependency-version: 0.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: serde_derive
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: thiserror
  dependency-version: 2.0.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: memchr
  dependency-version: 2.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: bitflags
  dependency-version: 2.9.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libc
  dependency-version: 0.2.176
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tempfile
  dependency-version: 3.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: bytesize
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: rustix
  dependency-version: 1.1.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: quote
  dependency-version: 1.0.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: trybuild
  dependency-version: 1.0.111
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: windows-sys
  dependency-version: 0.61.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: windows
  dependency-version: 0.62.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: regex
  dependency-version: 1.11.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: insta
  dependency-version: 1.43.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: async-io
  dependency-version: 2.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: fs-err
  dependency-version: 3.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: sysinfo
  dependency-version: 0.37.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: serde_json
  dependency-version: 1.0.145
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zip
  dependency-version: 5.1.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: cargo
- dependency-name: anstyle
  dependency-version: 1.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: aws-lc-rs
  dependency-version: 1.14.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: aws-lc-sys
  dependency-version: 0.32.2
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: backtrace
  dependency-version: 0.3.76
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: bindgen
  dependency-version: 0.72.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: cc
  dependency-version: 1.2.39
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: clap_builder
  dependency-version: 4.5.48
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: clap_derive
  dependency-version: 4.5.47
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: errno
  dependency-version: 0.3.14
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: find-msvc-tools
  dependency-version: 0.1.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: gimli
  dependency-version: 0.32.3
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: hyper-util
  dependency-version: 0.1.17
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: indexmap
  dependency-version: 2.11.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: libredox
  dependency-version: 0.1.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: linux-raw-sys
  dependency-version: 0.11.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: log
  dependency-version: 0.4.28
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: object
  dependency-version: 0.37.3
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: polling
  dependency-version: 3.11.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: regex-automata
  dependency-version: 0.4.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: rustc-hash
  dependency-version: 2.1.1
  dependency-type: indirect
  update-type: version-update:semver-major
  dependency-group: cargo
- dependency-name: rustls
  dependency-version: 0.23.32
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: rustls-webpki
  dependency-version: 0.103.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: schannel
  dependency-version: 0.1.28
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: security-framework-sys
  dependency-version: 2.15.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: serde_spanned
  dependency-version: 1.0.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: tokio-rustls
  dependency-version: 0.26.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: toml
  dependency-version: 0.9.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: toml_datetime
  dependency-version: 0.7.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: toml_parser
  dependency-version: 1.0.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: toml_writer
  dependency-version: 1.0.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: typenum
  dependency-version: 1.19.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: unicode-ident
  dependency-version: 1.0.19
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: winapi-util
  dependency-version: 0.1.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: windows-implement
  dependency-version: 0.60.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: windows-interface
  dependency-version: 0.59.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: wit-bindgen
  dependency-version: 0.45.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: xattr
  dependency-version: 1.6.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: cargo
- dependency-name: zerocopy
  dependency-version: 0.8.27
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zerocopy-derive
  dependency-version: 0.8.27
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
- dependency-name: zeroize
  dependency-version: 1.8.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-02 16:38:53 +00:00
Eliah Kagan
055b993d9a Merge pull request #2201 from EliahKagan/expectrl
Tell Dependabot to keep `expectrl` and `getrandom` back for now
2025-10-02 11:45:33 -04:00
Eliah Kagan
829e8cce9d Tell Dependabot to keep expectrl and getrandom back for now
This allows them to have patch version updates but not major and
minor version updates. Becuase they are not yet at 1.0.0, this has
the effect of allowing SemVer-compatible but not SemVer-breaking
updates to them via Dependabot version update PRs.

This may be temporary and, in the case of `getrandom`, is intended
to be temporary. For details, see comments in `dependabot.yml`, and:

- https://github.com/GitoxideLabs/gitoxide/pull/2200#issuecomment-3361407300
- https://github.com/GitoxideLabs/gitoxide/pull/2093#issuecomment-3361449228

This also expands the comment for holding back `imara-diff` (all
referenced PRs in the file now have full URLs, not just numbers).

The effect of keeping back `expectrl` was tested and verified to be
the only new hold needed to allow version updates to work, in:
https://github.com/EliahKagan/gitoxide/pull/111
2025-10-02 11:25:38 -04:00
Sebastian Thiel
0a576b968e Merge pull request #2196 from GitoxideLabs/copilot/fix-713956e8-cf8b-499a-99a8-92001948c9f8
Implement `std::fmt::Display` for `FullNameRef`, `PartialName`, and `PartialNameRef`
2025-09-27 20:59:03 +02:00
Sebastian Thiel
e670294d5f refactor 2025-09-27 20:40:47 +02:00
copilot-swe-agent[bot]
b813339291 Implement Display trait for reference name types
Co-authored-by: Byron <63622+Byron@users.noreply.github.com>
2025-09-27 20:20:07 +02:00
Eliah Kagan
9c686d9bc5 Merge pull request #2195 from EliahKagan/sp
Small spelling and Markdown style fixes
2025-09-26 16:45:36 -04:00
Eliah Kagan
0390a4f226 Small spelling and Markdown style fixes
This fixes spelling errors in the non-policy files `README.md` and
`threat-model-notes.md` in `etc/security`. (In contrast, `irp.md`
and `threat-model.md` do not appear to contain spelling errors.)

It also fixes some minor Markdown code style inconsistencies in
`threat-model.md`. This does not affect the text of that document,
nor probably even how it is rendered.
2025-09-26 16:20:08 -04:00
Eliah Kagan
11ee15c353 Merge pull request #2194 from EliahKagan/codeql
Switch to CodeQL "advanced" setup so it can run on all PRs
2025-09-26 15:47:40 -04:00
Eliah Kagan
8eddc260e5 Customize the CodeQL workflow
- Give the workflow a shorter name
- Also trigger on "run-ci" branches (in addition to main)
- Also allow to be triggered from Actions tab
- Comment out currently unneeded permissions
- Use v5 of actions/checkout (rather than v4)
- Don't persist auth token after checkout (see #2187)
2025-09-26 15:00:29 -04:00
Eliah Kagan
25354bda12 Switch CodeQL to advanced config to run on more PRs
Because the basic configuration doesn't run on PRs from forks.

So far this is just the advanced configuration workflow file
written automatically when enabling it through the GitHub interface
for doing so, with no customizations. This should already be
sufficient to let it run on PRs from forks, but the immediately
forthcoming commits shall apply some customizations.
2025-09-26 15:00:29 -04:00
Eliah Kagan
9edc206aee Merge pull request #2192 from EliahKagan/irp
Add IRP and threat model outline
2025-09-26 14:55:55 -04:00
Eliah Kagan
a2a1bef97c Make the reference to vuln reporting docs stand out more 2025-09-26 14:34:03 -04:00
Eliah Kagan
2bb3c0391c Move scripts in etc into etc/scripts
Since there are more items in `etc` now, this may help to find
things more easily.
2025-09-26 14:14:50 -04:00
Eliah Kagan
61bbbf87f3 Add readme for etc/security dir, and threat model outline notes
The main purpose of the readme is to help anybody who gets to this
directory with the goal of reporting a vulnerability to find the
documentation for doing so (which remains in `SECURITY.md`, not in
this directory). But it also briefly explains the contents.

The threat model notes also added here are not, even in principle,
a policy, but I think they may be useful to have, to be able to
refer to alongside the threat model outline.
2025-09-26 14:14:50 -04:00
Eliah Kagan
03e6decc12 Add incident response plan, and threat model outline
While these have gone through some revision and discussion so far,
they are always subject to iteration and improvement, both in
general and in the particularly highlighted ways noted within them.

Also, the IRP essentially only covers vulnerability handling right
now, and the threat model outline is an outline (it does not model
the attack surfaces or detailed use cases of each individual
`gix-*` library crate).

Reviewed-by: Sebastian Thiel <sebastian.thiel@icloud.com>
2025-09-26 14:14:20 -04:00
Sebastian Thiel
033ce8ef02 Merge pull request #2191 from GitoxideLabs/copilot/fix-b53588ea-1fea-485f-82a8-505a9101514e
Fix `gix credential fill` to accept protocol+host without URL field
2025-09-24 09:37:54 +02:00
Sebastian Thiel
2cc63ca95d refactor
- fmt
- clippy
2025-09-24 09:13:51 +02:00
copilot-swe-agent[bot]
030e040b68 fix: credential fill to allow protocol+host without URL
Co-authored-by: Byron <63622+Byron@users.noreply.github.com>
2025-09-24 09:13:19 +02:00
Sebastian Thiel
a80a150c75 fix: discover upwards to cwd
The upwards search for the repository directory takes a directory as
input and then walks through the parents. It turns out that it was
broken when the repository was the same as the working directory.

The code checked when the directory components had been stripped to "", in
case the directory was replaced with `cwd.parent()`, so the loop missed
to check `cwd` itself. If the input directory was "./something", then
"." was checked which then succeeded.
2025-09-22 07:40:36 +02:00
Sebastian Thiel
b3b3203853 refactor 2025-09-22 07:09:58 +02:00
Sebastian Thiel
4b535bf195 Merge pull request #2181 from GitoxideLabs/report
Add monthly report for September 2025
2025-09-22 06:38:15 +02:00
Eliah Kagan
9e254c88af Merge pull request #2187 from EliahKagan/run-ci/no-persist-credentials
Don't persist GitHub authentication token in `.git/config` on CI
2025-09-21 20:29:25 -04:00
Eliah Kagan
741cb6b355 Refine check-no-persist-credentials CI job
This also tests the job by manually trying out several ways it
should fail to make sure it does, but I squashed those out. The can
be seen at EliahKagan#105 and are summarized as follows:

* Test that we always have `actions/checkout` not persist credentials

* Check that we catch `actions/checkout` with no `with`

* Improve `check-no-persist-credentials` output and maintainability

* Check that we catch checkout `with` without `persist-credentials`

* Check that we catch `persist-credentials` not set to boolean false

* Having tested the new check, restore `persist-credentials: false`
2025-09-21 20:04:22 -04:00
Eliah Kagan
a235ac8035 Use actions/checkout with persist-credentials: false
When `actions/checkout` is used to check out the repository on CI,
it persists credentials related to the GitHub token in the local
scope configuration at `.git/config`, unless `persist-credentials`
is explicitly set to `false`. This facilitates subsequent remote
operations on the repository that could otherwise fail, but we have
no such operations in any of our workflows.

As an added layer of protection to keep these credentials from
leaking into logs (or otherwise being displayed or subject to
exfiltration) in case there is ever unintended coupling between the
operation of the test suite (or any step subsequent to checkout
that is used to prepare or run tests or other checks) and the
cloned `gitoxide` repository itself, this:

- Adds `persist-credentials: false` in a `with` mapping on every
  step that uses `actions/checkout`.

- Adds a new CI job that checks that every `actions/checkout` step
  in any job in any workflow sets `persist-credentials` to `false`.

In addition to usual testing on CI, the `release.yml` workflow is
among the workflows changed here, and it has also been tested:
https://github.com/EliahKagan/gitoxide/actions/runs/17899238656

See also:

- https://github.com/actions/checkout/blob/main/README.md
  (Covers what happens with/without `persist-credentials: false`).

- https://github.com/actions/checkout/issues/485
2025-09-21 20:04:22 -04:00
Eliah Kagan
f8be65fef6 Merge pull request #2186 from EliahKagan/small
Note that the `small` feature doesn't include `clone`
2025-09-21 19:52:38 -04:00
Eliah Kagan
6ab07f7728 doc: Note that the small feature doesn't include clone
The `small` feature of the `gitoxide` crate does not directly or
indirectly include the `gitoxide-core-blocking-client` feature, and
therefore does not provide `gix clone`. Although it was documented
to provide only local operations, this was ambiguous: in the sense
of local and remote repository operations, cloning is arguably a
remote operation even when one clones from a filesystem path, or
file URL. But in the broader meaning of "local," this could mean
merely that network transport is omitted and that local cloning is
included.

This adds a short explicit note that `small` does not include
`gix clone`. This is a minimal fix for #2185 and it may make sense
to improve the description further (unless `small` is to change).
2025-09-21 19:28:09 -04:00
Fredrik Medley
504afece05 Fix discover::upwards when working dir is the repo
The upwards search for the repository directory takes a directory as
input and then walks through the parents. It turns out that it was
broken when the repository was the same as the working directory.

The code checked when the directory components had been stripped to "", in
case the directory was replaced with `cwd.parent()`, so the loop missed
to check `cwd` itself. If the input directory was "./something", then
"." was checked which then succeeded.
2025-09-22 00:43:30 +02:00
Eliah Kagan
f7c7145df0 Merge pull request #2183 from EliahKagan/macos-intel
Build Intel Mac releases on Intel runner to fix missing `openssl` for target
2025-09-21 16:00:19 -04:00
Eliah Kagan
f56ca27244 Build x86_64-apple-darwin on macos-15-intel
This changes the runner in the `release.yml` workflow for the job
that builds the `x86_64-apple-darwin` target from `macos-latest`
(which currently aliases the `macos-15` runner, an Apple Silicon
system) to the recently introduced `macos-15-intel` runner. This is
to fix recent build failures for the `lean` and `max` feature jobs
with that target, which happen when the `openssl-sys` dependency
attempts to find the installed `openssl` library for the target
architecture.

The new failures can be seen in these runs:

- https://github.com/EliahKagan/gitoxide/actions/runs/17895976664/job/50882669073
- https://github.com/EliahKagan/gitoxide/actions/runs/17895976664/job/50882669084

I'm not sure why the failures happened, since they did not occur in
the `macos-15` experiments with `release.yml` done as part of #2078.

On the new `macos-15-intel` runner, see:
https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/

To verify that the changes here fix the failures, see:

- https://github.com/EliahKagan/gitoxide/actions/runs/17897891645/job/50886931822
- https://github.com/EliahKagan/gitoxide/actions/runs/17897891645/job/50886931809
2025-09-21 15:40:25 -04:00
Sebastian Thiel
3148010f8a Add monthly report for September 2025 2025-09-21 13:20:28 +02:00
Eliah Kagan
d976848e7e Merge pull request #2180 from EliahKagan/copy-royal-guidance
Strengthen and adjust `copy-royal` usage guidance and caveats
2025-09-21 05:11:25 -04:00
Eliah Kagan
90a3dcbddc doc: Strengthen and adjust copy-royal usage guidance and caveats
The `copy-royal` algorithm maintains the patterns and "shape" of
text sufficiently to keep diffs the same (in the vast majority of
cases). It is used in `internal-tools` to help prepare test cases
with what is important and relevant to a regression test of diff
behavior, rather than the exact original repository content in a
tree that has been found to trigger a bug. It avoids needless
verbatim reproduction, while preserving aspects that are useful and
necessary for testing. It keeps the focus on patterns, preventing
irrelevant details of code in a tree that triggered a bug from
being confused with the logic of gitoxide itself, and makes it less
likely to be touched inadvertently in efforts to fix bugs or
improve style (which, in test data, would cause subtle breakage).

Although these benefits are substantial and we intend to continue
using copy-royal in the preparation of test cases as needed if or
when regressions arise, some of the guidance and rationale we had
given for its use was inaccurate or misleading. Most importantly,
copy-royal cannot be used in practice to redact sensitive
information: if you have a repository whose contents should not be
made public, then it is not safe to share the output of copy-royal
run on that repository either.

Copy-royal is implemented (roughly speaking) by mapping alphabetic
characters down to ten letters. This removes some information, at
least in principle: that is, if it were given totally random
letters as input, then it would be impossible to reverse it to get
those letters back. Even on input that is much more structured and
predictable, such as real-world input, it obfuscates it, making it
look garbled and nonsensical. However, even when one intuitively
feels that it has destroyed information, it is possible to reverse
it in many cases, and possibly even in all practical cases.

The reason is that, in real world source code and natural language,
some sequences of letters are overwhelmingly more likely to occur
than others, both in general and (especially) contextually given
what surrounding text is present. The information that is removed
by mapping into ten letters could often be reconstructed by:

1. Building a grammar of possible inputs, which can be done in a
   simple manner by translating the copy-royal output one wishes to
   reverse into a regular expression in which every symbol in the
   copy-royal output becomes a character class of characters that
   map to it. In effect, for every output of the copy-royal
   algorithm, there is a regex that matches the possible inputs.

2. Predicting, stepwise, what code or text is likely to have arisen
   that matches that grammar. In principle this could be done with
   a variety of techniques or even manually. But one fruitful
   approach would be to use an autoregressive large language model,
   and apply constrained decoding[1] to sample only logits
   consistent with the regex. Small experiments carried out so far
   suggest[2] this to be a workable technique when combined with
   beam search[3]. (This technique does not require the specific
   text or code being reconstructed to have existed when the model
   was trained.)

Accordingly, this modifies the documentation of copy-royal to avoid
claiming that the input of copy-royal cannot be recovered, or
anything that recommends or may appear to recommend the use of
copy-royal to redact sensitive information. It also clarifies and
adjusts the explanation of when it makes sense to use copy-royal,
and describes some of its benefits that do not rely on the
assumption that it is infeasible (or even difficult) to reverse.

In the comment documenting `BlameCopyRoyal`, which is among those
edited in the above ways, this also edits its top line to make
clear more generally how `BlameCopyRoyal` relates to `git blame`.

[1]: https://github.com/Saibo-creator/Awesome-LLM-Constrained-Decoding
[2]: See link(s) in https://github.com/GitoxideLabs/gitoxide/pull/2180
[3]: https://en.wikipedia.org/wiki/Beam_search

Co-authored-by: Sebastian Thiel <sebastian.thiel@icloud.com>
2025-09-21 02:34:49 -04:00
Sebastian Thiel
442f800026 Merge pull request #2174 from cruessler/deprecate-in-place-methods
feat: replace `Reference::peel_to_id_in_place_packed`
2025-09-18 04:41:33 +02:00
Christoph Rüßler
03804965f5 feat: replace Reference::peel_to_id_in_place_packed
Also, update documentation where it was still referring to deprecated
`in_place` methods to refer to the new methods instead.
2025-09-17 10:15:39 +02:00
Sebastian Thiel
51f998f60a Merge pull request #2173 from metlos/remote-with-url
feat: ability to change the fetch url of a remote
2025-09-17 05:17:28 +02:00
Sebastian Thiel
620d275bea fix: deprecate Remote::push_url*() in favor of Remote::with_push*(). 2025-09-17 04:58:33 +02:00
Lukas Krejci
1d4a7f534d feat: ability to change the fetch url of a remote
The remote has a couple of "builder" methods to change
is fields, e.g. `push_url` for setting the push url.

A builder method for changing the fetch url of a remote
was missing. This makes it impossible to fully replicate 
the functionality of `git remote set-url`.
2025-09-15 21:35:25 +02:00
Sebastian Thiel
81c0c1612d Merge pull request #2171 from cruessler/deprecate-in-place-methods-on-head
feat: replace `peel_to_x_in_place` by `peel_to_x` in `gix::types::Head`
2025-09-15 05:44:34 +02:00
Sebastian Thiel
d302fa20df Merge pull request #2170 from GitoxideLabs/copilot/fix-7a3e1d32-c145-43e2-8e87-319b255dbc2f
Implement WriteTo trait for gix::Blob
2025-09-15 05:40:03 +02:00
Christoph Rüßler
1536fd8651 Adapt to changes in gix 2025-09-15 05:25:57 +02:00
Christoph Rüßler
b6fbf05392 feat: replace Head::(try_)peel_to_x_in_place with Head::peel_to_x.
The `_in_place()` suffixed methods are now deprecated.
2025-09-15 05:24:44 +02:00
Sebastian Thiel
3499050a97 refactor 2025-09-15 05:20:19 +02:00
copilot-swe-agent[bot]
ca9988284c Implement WriteTo trait for gix::Blob with comprehensive tests
Co-authored-by: Byron <63622+Byron@users.noreply.github.com>
2025-09-15 05:20:19 +02:00
Sebastian Thiel
e60e253831 Merge pull request #2169 from GitoxideLabs/copilot/fix-54bce74a-dc5e-4361-b53b-326c16b34046
Remove special handling of empty blob hash in gix - treat as error if not found
2025-09-14 08:47:51 +02:00
Sebastian Thiel
b9c7a7e076 refactor 2025-09-14 08:30:04 +02:00