jesseduffield.lazygit/pkg
Stefan Haller d19af37ee7 Tell git where the repo is when it can't find it itself
git finds a repo by looking for a .git in the directory a command runs
in. Lazygit runs its commands in the work tree, so that normally works —
but not when the git dir lives somewhere else entirely, which is what
core.worktree and --work-tree are for. Lazygit chdir'd into such a work
tree and then ran commands that couldn't see any repo from there, so
opening a repo with core.worktree set panicked on startup. It only
worked with --git-dir because that leaves GIT_DIR in the environment for
every command to inherit.

Work out at startup whether git can find the repo from its work tree,
and when it can't, put GIT_DIR and GIT_WORK_TREE on every command the
repo's builder produces. As with the working directory the builder pins
(527124d0e0), these also go into the process env — subprocesses don't
come through the builder — but the commands don't read them from there,
because the process env belongs to whichever repo we have switched to
since.

Working out whether git can find the repo means asking git, rather than
reading the .git file, whose contents can spell the same directory
differently than git does. The extra query is skipped for a repo whose
git dir is simply its .git directory, which is nearly all of them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 11:15:01 +02:00
..
app Recognize a repo that has no work tree instead of bailing out 2026-08-08 11:15:01 +02:00
cheatsheet Render every key for a binding in the cheatsheet 2026-05-25 15:18:18 +02:00
commands Tell git where the repo is when it can't find it itself 2026-08-08 11:15:01 +02:00
common Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
config Move Github PR cache out of state.yml into a separate file 2026-08-02 19:09:22 +02:00
constants Adapt links 2026-07-31 08:42:51 +02:00
env Tell git where the repo is when it can't find it itself 2026-08-08 11:15:01 +02:00
fakes Modernize all codes 2025-11-15 10:46:23 +01:00
gocui Exclude more commit trailers from auto-wrapping 2026-08-02 19:22:34 +02:00
gui Don't clear gui.git when we fail to open a repo 2026-08-08 11:15:01 +02:00
i18n Recognize a repo that has no work tree instead of bailing out 2026-08-08 11:15:01 +02:00
integration Tell git where the repo is when it can't find it itself 2026-08-08 11:15:01 +02:00
jsonschema Fold legacy quit-alt1 into the multi-key quit binding 2026-05-25 15:32:47 +02:00
logs Fix Windows linter errors 2026-06-16 16:21:13 +02:00
snake Enable intrange linter, and fix warnings 2025-06-30 18:30:11 +02:00
tasks Give task commands a Terminate method instead of exposing their process 2026-08-04 07:03: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 Rework the custom pager config (rename to diff renderer) 2026-07-31 08:42:51 +02:00