Danny Stoll
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 <dstoll@radix.trade>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
Co-authored-by: extrawurst <mail@rusticorn.com>
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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 11:09:41 -05:00
dependabot[bot]
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] <support@github.com>
* Adapt to API changes
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Christoph Rüßler <christoph.ruessler@mailbox.org>
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
xlai89
cb17cfe105
feat: support pre-push hooks ( #2737 )
...
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
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
linkmauve
88ace76db5
Fix typos ( #2740 )
...
Thanks to typos for finding those!
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
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]
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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
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 Agricola
7f88934d05
Bump msrv to 1.81 ( #2613 )
...
Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
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
extrawurst
eeebb0a647
fix cargo deny advisory warning ( #2598 )
2025-04-07 18:02:34 +02:00
extrawurst
cc907996f4
fix latest clippy ( #2597 )
2025-04-07 16:06:00 +02:00
Johannes Agricola
7f75307f6e
Resolve core.hooksPath relative to GIT_WORK_TREE ( #2571 )
...
* Resolve core.hooksPath relative to GIT_WORK_TREE
git supports relative values in core.hooksPath.
`man git-config`:
> A relative path is taken as relative to the directory where the hooks are
> run (see the "DESCRIPTION" section of githooks[5]).
`man githooks`:
> Before Git invokes a hook, it changes its working directory to either
> $GIT_DIR in a bare repository or the root of the working tree in a >
> non-bare repository.
I.e. relative paths in core.hooksPath in non-bare repositories are always
relative to GIT_WORK_TREE.
There is a further exception; I believe this is not considered for path
resolution:
> An exception are hooks triggered during a push (pre-receive, update,
> post-receive, post-update, push-to-checkout) which are always executed
> in $GIT_DIR.
* Favor Repository::workdir() over path().parent()
This more clearly errors in case of bare repositories instead of using
the parent directory of the bare repository.
---------
Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-04-04 15:28:44 +02:00
Johannes Agricola
89f73d2ec2
Disable dotted range commit yanking ( #2577 )
...
The algorithm for computing marked_consecutive assumes that commits are
consecutive in the commit graph if they are consecutive in the
linearized log used in` commitlist.rs`. That is not universally correct,
as siblings may also be displayed consecutively in this list.
For now, this just removes generating commit lists in dotted range
notation.
Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
2025-04-04 15:27:50 +02:00
Lena
92ef9f6fde
Respect .mailmap ( #2485 )
2025-03-19 14:44:02 +01:00
vlad-anger
979fa68837
Push with refspec ( #2542 )
...
* push: respect `branch.*.merge` when push default is upstream
2025-03-18 18:35:39 +01:00
Johannes Agricola
a91132d187
Bump git2 from 0.20.0 to 0.20.1 ( #2567 )
...
* Bump git2 from 0.20.0 to 0.20.1
Bumps [git2](https://github.com/rust-lang/git2-rs ) from 0.20.0 to 0.20.1.
- [Changelog](https://github.com/rust-lang/git2-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-0.20.0...git2-0.20.1 )
---
updated-dependencies:
- dependency-name: git2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* Avoid passing reference into struct
git2-rs changed the lifetime of the result of Patch::hunk() to reference
the patch struct:
https://github.com/rust-lang/git2-rs/pull/1141
Thus, returning a patch struct and a reference into it is flagged by the
borrow checker upon move when returning.
This patch avoids returning both alltogether by separating retrieving
and retrieving the patch.
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
2025-03-18 09:09:11 +01:00
Vasley
4031b0d1a7
Change links to point to gitui-org instead of extrawurst ( #2538 )
2025-03-16 15:33:28 +01:00
dependabot[bot]
58b4e2c21e
Bump gix from 0.69.1 to 0.70.0 ( #2492 )
...
Bumps [gix](https://github.com/GitoxideLabs/gitoxide ) from 0.69.1 to 0.70.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.69.1...gix-v0.70.0 )
---
updated-dependencies:
- dependency-name: gix
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 12:07:56 +01:00
extrawurst
7ec62279e8
prepare for rc ( #2479 )
2025-01-13 22:26:14 +01:00
extrawurst
01ad0615b2
git2 upgrade ( #2473 )
2025-01-10 15:28:52 +01:00
extrawurst
89db83839d
Gix upgrade ( #2472 )
2025-01-10 14:19:27 +01:00