Commit Graph
592 Commits
Author SHA1 Message Date
extrawurst ee1bcd1eb3 add e2e test covering gpg (#2986) 2026-07-02 10:10:49 +02:00
7a397b0c25 feat: support x509 commit signing (#2844)
* feat: support x509 commit signing

* fix changelog

* add e2e test

---------

Co-authored-by: extrawurst <[email protected]>
Co-authored-by: rusticorn <[email protected]>
2026-07-02 00:13:43 +02:00
Federico Guerinoniandextrawurst 5583cc986b feat(reword): support gpg signing for non-HEAD commits (#2959)
Rewording any commit older than HEAD used to fail with
SignRewordNonLastCommit as soon as commit.gpgsign was enabled, because
git2's rebase API has no way to sign the commits it produces. The
behaviour matched neither git CLI nor user expectation, so anyone
relying on signing had to drop down to the shell to fix a typo a few
commits back.

Co-authored-by: extrawurst <[email protected]>
2026-07-01 12:43:04 +02:00
Sai Asish Yandextrawurst 8b7a74ead1 fix: avoid index-out-of-bounds panic in staging apply_selection (#2955)
Co-authored-by: extrawurst <[email protected]>
2026-07-01 12:00:13 +02:00
rusticorn c6b370f096 fix(ci): collapse inline tables to single line for rust 1.88
The tombi 'fmt' left multi-line inline tables in Cargo.toml, which are
TOML 1.1 syntax that Cargo on our MSRV (rust 1.88) rejects with
'invalid inline table'. tombi.toml already caps line-width so tombi
keeps these single-line going forward.
2026-07-01 11:34:25 +02:00
rusticorn 328ecfb362 tombi config 2026-07-01 11:22:48 +02:00
Christoph Rüßler 9613d153aa Update git2 to 0.21 across crates (#2962)
* Update git2 to 0.21 across crates

* Use feature https for git2

* Apply clippy suggestions

* Run cargo fmt

* Apply clippy suggestions
2026-06-16 08:22:18 +02:00
extrawurst b1db21e10a fix panic when opening submodule (#2896)
this is caused by us dropping the git notify channel and creating a new one when opening the submodule.

closes #2895
2026-03-31 12:38:05 +01:00
extrawurst 0cf38b5def use tombi for toml formatting (#2894) 2026-03-28 21:02:05 +01:00
extrawurst 6aeffb4be8 cargo sort 2026-03-21 12:55:31 +00:00
extrawurst 09b68f8f5b more cargo pumps 2026-03-21 12:49:38 +00:00
extrawurst 98e130f8c8 release prep 2026-03-21 12:45:40 +00:00
49555ce966 perf: prevent repeated status fetches in large repos (#2824)
* perf: prevent repeated status fetches in large repos

Replace time-based cache invalidation with a generation counter.

The old `StatusParams` included a millisecond timestamp (tick) in its
hash, causing the cache to invalidate on every UI tick. For large repos
with millions of files, this led to repeated index loading and 5+ minute load times.

This change uses a different strategy to manage cache invalidation:
- Remove tick from StatusParams hash
- Add generation counter that increments after each fetch completes
- Include generation in cache hash

This ensures:
- No repeated fetches while one is already pending, making gitui usable
  in large repos
- New fetch starts immediately after completion, keeping gitui responsive
  in small repos
- External file changes will still be detected on the next fetch cycle

* fix changelog

---------

Co-authored-by: Daniel Stoll <[email protected]>
Co-authored-by: extrawurst <[email protected]>
Co-authored-by: extrawurst <[email protected]>
2026-03-20 01:12:14 +00:00
extrawurst 5d6731326e Rust msrv bump to 1.88 (#2879) 2026-03-19 18:33:52 +00:00
extrawurst 28cd5e7bb2 clippy fixes 2026-03-19 14:13:55 +00:00
Christoph Rüßler b65de976e6 Fix clippy issues on nightly (#2852)
This fixes issues found by `clippy 0.1.95 (f134bbc78d 2026-01-24)`.
2026-01-25 16:20:23 -05:00
dependabot[bot] 13d75df6cd Bump gix from 0.77.0 to 0.78.0 (#2849) 2026-01-23 21:05:05 +01:00
extrawurst 1c118d75f3 proper pre-push hook implementation (#2811) 2026-01-18 17:37:45 +01:00
dependabot[bot] 71208ed570 Bump the cargo-minor group across 1 directory with 2 updates (#2836)
Bumps the cargo-minor group with 2 updates in the / directory: [indexmap](https://github.com/indexmap-rs/indexmap) and [serial_test](https://github.com/palfrey/serial_test).


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

Updates `serial_test` from 3.2.0 to 3.3.1
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v3.2.0...v3.3.1)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: serial_test
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 11:09:41 -05:00
dependabot[bot]andChristoph Rüßler 68ca5701f1 Bump gix from 0.75.0 to 0.77.0 (#2826)
* Bump gix from 0.75.0 to 0.77.0

Bumps [gix](https://github.com/GitoxideLabs/gitoxide) from 0.75.0 to 0.77.0.
- [Release notes](https://github.com/GitoxideLabs/gitoxide/releases)
- [Changelog](https://github.com/GitoxideLabs/gitoxide/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GitoxideLabs/gitoxide/compare/gix-v0.75.0...gix-v0.77.0)

---
updated-dependencies:
- dependency-name: gix
  dependency-version: 0.77.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Adapt to API changes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Christoph Rüßler <[email protected]>
2026-01-10 12:07:36 -05:00
Christoph Rüßler 7f9aa97ada Don't stop status iter on error, log warning instead (#2821) 2025-12-31 10:55:31 -05:00
extrawurst c06235a1d5 bump git2-hooks 2025-12-14 15:01:52 -05:00
extrawurst 197bcb5fc9 version bumps for release 0.28 2025-12-14 14:57:20 -05:00
Fatpandac 3082396bf1 Support choosing checkout branch method when status is not empty (#2494) 2025-11-28 18:36:40 -03:00
Christoph Rüßler a6d6f31885 Overwrite committer on amend when gpgsign = false (#2792) 2025-11-28 17:11:22 -03:00
Christoph Rüßler 3de0b23ef2 Take workdir into account in gix_repo (#2789)
* Use gix_repo in get_tags

* Take workdir into account in gix_repo
2025-11-27 12:12:08 -03:00
Christoph Rüßler 8a57155c4d Add test for gix_repo respecting workdir (#2790) 2025-11-27 07:43:34 -03:00
xlai89andextrawurst cb17cfe105 feat: support pre-push hooks (#2737)
Co-authored-by: extrawurst <[email protected]>
2025-10-31 08:57:27 +01:00
extrawurst 2374e00302 validate path on startup for gix aswell (#2768)
so far we only try to open using the legacy libgit2 based one
2025-10-29 22:07:46 +01:00
extrawurst 58490961c5 update log (#2766) 2025-10-29 15:27:28 +01:00
extrawurst 1032cccd55 cleanup format strings (#2765) 2025-10-29 13:58:27 +01:00
extrawurst 6bb216c0d4 fix warnings and deny deprecated (#2753)
* fix gitoxide warning

* do not allow deprecated fn
2025-10-28 18:03:19 +01:00
linkmauveandextrawurst 88ace76db5 Fix typos (#2740)
Thanks to typos for finding those!

Co-authored-by: extrawurst <[email protected]>
2025-10-28 16:35:05 +01:00
linkmauve 26a38183cf Fix all mismatched_lifetime_syntaxes warnings (#2727) 2025-10-28 16:34:42 +01:00
dependabot[bot]andextrawurst 5f23781c10 Bump the cargo-minor group across 1 directory with 8 updates (#2750)
Bumps the cargo-minor group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [bitflags](https://github.com/bitflags/bitflags) | `2.9.1` | `2.10.0` |
| [bytesize](https://github.com/bytesize-rs/bytesize) | `2.0.1` | `2.1.0` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.9.0` | `2.12.0` |
| [notify](https://github.com/notify-rs/notify) | `8.0.0` | `8.2.0` |
| [rayon-core](https://github.com/rayon-rs/rayon) | `1.12.1` | `1.13.0` |
| [syntect](https://github.com/trishume/syntect) | `5.2.0` | `5.3.0` |
| [rayon](https://github.com/rayon-rs/rayon) | `1.10.0` | `1.11.0` |



Updates `bitflags` from 2.9.1 to 2.10.0
- [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.1...2.10.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 `indexmap` from 2.9.0 to 2.12.0
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.9.0...2.12.0)

Updates `notify` from 8.0.0 to 8.2.0
- [Release notes](https://github.com/notify-rs/notify/releases)
- [Changelog](https://github.com/notify-rs/notify/blob/main/CHANGELOG.md)
- [Commits](https://github.com/notify-rs/notify/compare/notify-8.0.0...notify-8.2.0)

Updates `rayon-core` from 1.12.1 to 1.13.0
- [Changelog](https://github.com/rayon-rs/rayon/blob/main/RELEASES.md)
- [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.12.1...rayon-core-v1.13.0)

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 `syntect` from 5.2.0 to 5.3.0
- [Release notes](https://github.com/trishume/syntect/releases)
- [Changelog](https://github.com/trishume/syntect/blob/master/CHANGELOG.md)
- [Commits](https://github.com/trishume/syntect/compare/v5.2.0...v5.3.0)

Updates `rayon` from 1.10.0 to 1.11.0
- [Changelog](https://github.com/rayon-rs/rayon/blob/main/RELEASES.md)
- [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.10.0...rayon-core-v1.11.0)

---
updated-dependencies:
- dependency-name: bitflags
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: bytesize
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: indexmap
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: notify
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: rayon-core
  dependency-version: 1.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: syntect
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: rayon
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: extrawurst <[email protected]>
2025-10-28 16:34:17 +01:00
Christoph Rüßler dd475801ae Restore default for showUntrackedFiles (#2751)
This restores the behaviour of `gitui` <= 0.27.
2025-10-28 15:59:03 +01:00
Christoph Rüßler db211e5ac7 Update gix from 0.71.0 to 0.74.1 (#2745)
* Update gix from 0.71.0 to 0.74.1

* Bump MSRC from 1.81 to 1.82

This is required by `gitoxide` 0.74.

* Address clippy issues

* Add getrandom and rustix to deny.toml

* Document reasons for ignoring duplicates
2025-10-27 18:37:30 +01:00
Christoph Rüßler 60912c0b47 Derive Default per clippy recommendation (#2712) 2025-09-08 16:49:15 +02:00
Christoph Rüßler fd46b9a0c1 Use gitoxide for get_tags (#2664) 2025-08-06 14:26:19 -07:00
Christoph Rüßler fdd5a19d20 Extract GixError (#2687) 2025-08-05 12:55:59 -07:00
Christoph Rüßler 6685f9adb3 Use gitoxide in get_status (#2673) 2025-07-28 19:28:02 +02:00
Peer Sommerlund 6d0a2ec115 Minimal docs at module level (#2639) 2025-06-24 09:23:02 +02:00
extrawurst 69fd7e664c bump git2-hooks version 2025-05-26 23:22:26 +02:00
Christoph Rüßler 2d7d1730ba Use gitoxide in get_commit_info (#2654)
* Implement From<gix::ObjectId> for CommitId

* Use gitoxide in get_commit_info
2025-05-26 23:06:36 +02:00
Christoph Rüßler 7625277953 Have cargo-sort 2.0.1 sort Cargo.toml's (#2653) 2025-05-24 22:14:26 +02:00
extrawurst 3453e4624d fix nightly 2025-04-30 10:37:38 +02:00
Johannes Agricola e08d954573 Clean up a few #[allow]s (#2614) 2025-04-16 10:45:08 +02:00
Johannes AgricolaandNaseschwarz 7f88934d05 Bump msrv to 1.81 (#2613)
Co-authored-by: Naseschwarz <[email protected]>
2025-04-16 09:21:06 +02:00
Joshix-1 711210b97b Run git-hooks more correctly (#2483) 2025-04-15 15:01:39 +02:00
extrawurst 9781608584 upgrade dirs (#2569) 2025-04-15 09:22:50 +02:00