Skip to content

Fix #5302: Create .git/info directory before writing exclude file#5325

Merged
stefanhaller merged 1 commit into
jesseduffield:masterfrom
cobyfrombrooklyn-bot:fix-issue-5302
Mar 8, 2026
Merged

Fix #5302: Create .git/info directory before writing exclude file#5325
stefanhaller merged 1 commit into
jesseduffield:masterfrom
cobyfrombrooklyn-bot:fix-issue-5302

Conversation

@cobyfrombrooklyn-bot

Copy link
Copy Markdown

Fixes #5302

Problem

When .git/info directory does not exist (can happen with bare clones, manual deletion, or certain Git configurations), selecting "Add to .git/info/exclude" fails with:

open <repo-path>/.git/info/exclude: no such file or directory

The Exclude function used os.OpenFile with os.O_CREATE which creates the file but not its parent directory.

Fix

Added os.MkdirAll to create the .git/info directory (with 0755 permissions) before attempting to open the exclude file. MkdirAll is a no-op if the directory already exists, so existing behavior is unchanged.

Test

Added integration test file/exclude_without_info_dir that:

  1. Removes .git/info directory during repo setup
  2. Attempts to exclude a file via the menu
  3. Verifies .git/info/exclude is created with the correct content

Test fails without the fix, passes with it.

Tested locally on macOS ARM (Apple Silicon). Unit tests and integration test pass.

@stefanhaller stefanhaller added the bug Something isn't working label Mar 8, 2026
…lude file

When .git/info directory does not exist (can happen with bare clones
or manual deletion), the Exclude function failed with 'no such file
or directory'. Added os.MkdirAll to create the directory before
opening the exclude file.

Added integration test exclude_without_info_dir that removes .git/info
before attempting to exclude a file.
@stefanhaller stefanhaller enabled auto-merge March 8, 2026 15:25
@stefanhaller stefanhaller merged commit 25895bf into jesseduffield:master Mar 8, 2026
13 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Mar 24, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.59.0` → `v0.60.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary>

### [`v0.60.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.60.0)

[Compare Source](jesseduffield/lazygit@v0.59.0...v0.60.0)

<!-- Release notes generated using configuration in .github/release.yml at v0.60.0 -->

#### What's Changed

##### Enhancements 🔥

- Rename "Copy commit hash to clipboard" to mention it's an abbreviated hash by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5331](jesseduffield/lazygit#5331)
- Hide the "Fetching..." status of the auto-fetch when bottom line is hidden by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5321](jesseduffield/lazygit#5321)
- Allow removing lines from patch directly by [@&#8203;jesseduffield](https://github.com/jesseduffield) in [#&#8203;5277](jesseduffield/lazygit#5277)
- Filter file views rather than search by [@&#8203;jesseduffield](https://github.com/jesseduffield) in [#&#8203;5273](jesseduffield/lazygit#5273)
- Show branch name and detached HEAD in worktrees tab by [@&#8203;ruudk](https://github.com/ruudk) in [#&#8203;5339](jesseduffield/lazygit#5339)
- Add backward cycling support for log view (using `<shift>-a` on status page) by [@&#8203;zaakiy](https://github.com/zaakiy) in [#&#8203;5346](jesseduffield/lazygit#5346)
- Show worktree name next to branch in branches list by [@&#8203;ruudk](https://github.com/ruudk) in [#&#8203;5340](jesseduffield/lazygit#5340)

##### Fixes 🔧

- Fix matching of lazygit-edit URLs without line numbers by [@&#8203;danielwe](https://github.com/danielwe) in [#&#8203;5311](jesseduffield/lazygit#5311)
- Fix [#&#8203;5302](jesseduffield/lazygit#5302): Create .git/info directory before writing exclude file by [@&#8203;cobyfrombrooklyn-bot](https://github.com/cobyfrombrooklyn-bot) in [#&#8203;5325](jesseduffield/lazygit#5325)
- Fix off-by-one error when calculating popup panel dimensions by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5312](jesseduffield/lazygit#5312)
- Properly disable clicks in inactive views behind popups by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5313](jesseduffield/lazygit#5313)
- Enable `{` and `}` to change diff context size in branches and tags panels in diffing mode by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5258](jesseduffield/lazygit#5258)
- Fix diff display of custom pagers after screen mode change by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5349](jesseduffield/lazygit#5349)

##### Maintenance ⚙️

- Bump github.com/cloudflare/circl from 1.6.1 to 1.6.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5323](jesseduffield/lazygit#5323)

##### Docs 📖

- Fix typo: MacOS to macOS by [@&#8203;04cb](https://github.com/04cb) in [#&#8203;5335](jesseduffield/lazygit#5335)

##### I18n 🌎

- Update translations from Crowdin by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5352](jesseduffield/lazygit#5352)

##### Other Changes

- Add Terra as an alternative Fedora install method by [@&#8203;Owen-sz](https://github.com/Owen-sz) in [#&#8203;5281](jesseduffield/lazygit#5281)

#### New Contributors

- [@&#8203;Owen-sz](https://github.com/Owen-sz) made their first contribution in [#&#8203;5281](jesseduffield/lazygit#5281)
- [@&#8203;danielwe](https://github.com/danielwe) made their first contribution in [#&#8203;5311](jesseduffield/lazygit#5311)
- [@&#8203;cobyfrombrooklyn-bot](https://github.com/cobyfrombrooklyn-bot) made their first contribution in [#&#8203;5325](jesseduffield/lazygit#5325)
- [@&#8203;04cb](https://github.com/04cb) made their first contribution in [#&#8203;5335](jesseduffield/lazygit#5335)
- [@&#8203;zaakiy](https://github.com/zaakiy) made their first contribution in [#&#8203;5346](jesseduffield/lazygit#5346)

**Full Changelog**: <jesseduffield/lazygit@v0.59.0...v0.60.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42MS43IiwidXBkYXRlZEluVmVyIjoiNDMuNjEuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fails to add to .git/info/exclude when .git/info directory is missing

2 participants