jesseduffield.lazygit/pkg
Stefan Kerkmann 2ed887d149 Commits: add incremental git log limit
The existing git log logic fetched the first 300 commits of a repo and
displayed them in the local and sub-commit views. Once a user selected a
commit beyond a threshold of 200 commits the whole repository was
loaded. This is problematic with large repos e.g. the linux kernel with
currently ~138k commits as lazygit slows down substantially with such a
large number of commits in memory.

This commit replaces the current all or only the first 300 commits logic
with an incremental fetching approach:

1. The first 400 commits of repo are loaded by default.
2. If the user selects a commit beyond a threshold (current limit-100)
   the git log limit is increased by 400 if there are more commits
   available. If there are more commits available is currently checked
   by comparing the previous log limit with the real commit count in the
   model, if the commit count is less then the limit it is assumed that
   we reached the end of the commit log. Ideally it would be better to
   call `git rev-list --count xyz` in the right places and compare with
   this result, but this requires more changes.

Adding a "paginated implementation" by utilizing `git log --skip=x
--max-count=y` and appending commits to the model instead of replacing
the whole collection would be nice, but this requires deeper changes to
keep everything consistent.

Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>

Co-authored-by: DeepSeek V4 Flash
2026-09-02 16:08:50 +02:00
..
app Recognize a repo that has no work tree instead of bailing out 2026-08-08 11:15:01 +02:00
cheatsheet Fix linter warning about WriteString(fmt.Sprintf(...)) 2026-08-16 16:35:11 +02:00
commands Commits: add incremental git log limit 2026-09-02 16:08:50 +02:00
common Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
config Remove a few unnecessary parentheses 2026-08-13 20:40:11 +02:00
constants Adapt links 2026-07-31 08:42:51 +02:00
env Remember how to get back to a repo we entered a submodule from 2026-08-08 11:15:01 +02:00
fakes Modernize all codes 2025-11-15 10:46:23 +01:00
gocui Draw embedded views as one focused unit 2026-08-31 20:41:22 +02:00
gui Commits: add incremental git log limit 2026-09-02 16:08:50 +02:00
i18n Filter the keybindings menu as you type 2026-08-31 20:41:22 +02:00
integration Filter the recent repositories menu as you type 2026-08-31 20:41:22 +02:00
jsonschema Fix use of reflect.Ptr 2026-08-16 16:35:11 +02:00
logs Separate the runs in the debug log with a blank line 2026-08-15 09:48:11 +02:00
snake Remove a few unnecessary parentheses 2026-08-13 20:40:11 +02:00
tasks Reset the scroll to the top at first paint, not when the task starts 2026-08-15 15:30:27 +02:00
theme Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
updates Change direct access to Common.UserConfig to a getter 2024-08-18 10:24:52 +02:00
utils Make StringStack generic 2026-08-08 11:15:01 +02:00