Skip to content

Conversation

@abobov
Copy link
Contributor

@abobov abobov commented Oct 31, 2025

PR Description

The existing diff parser incorrectly treated subsequent lines beginning with --- as filename headers while processing hunks. This caused corruption when dashed lines appeared within diffs themselves.

Restrict filename detection to only occur between hunks.

This repository https://github.com/abobov/lazygit-fixup-issue demonstrates the issue:

  • clone repository
  • run git reset --soft HEAD~
  • try <c-f> Find base commit for fixup
  • fatal: no such path ... error

Please check if the PR fulfills these requirements

  • Cheatsheets are up-to-date (run go generate ./...)
  • Code has been formatted (see here)
  • Tests have been added/updated (see here for the integration test guide)
  • Text is internationalised (see here)
  • If a new UserConfig entry was added, make sure it can be hot-reloaded (see here)
  • Docs have been updated if necessary
  • You've read through your own file changes for silly mistakes etc
@abobov abobov force-pushed the fix-diff-hunk-boundaries-parsing branch 2 times, most recently from 186d5f0 to 29eb391 Compare November 1, 2025 00:58
@stefanhaller stefanhaller added blocks-release Must be addressed before we can cut the next release bug Something isn't working labels Nov 1, 2025
The existing diff parser incorrectly treated subsequent lines beginning with "---" as filename headers while processing hunks. This caused corruption when dashed lines appeared within diffs themselves. Restrict filename detection to only occur between hunks.
@stefanhaller stefanhaller force-pushed the fix-diff-hunk-boundaries-parsing branch from 29eb391 to 4c4929a Compare November 1, 2025 08:40
@stefanhaller
Copy link
Collaborator

Looks great, thanks for fixing this.

@stefanhaller stefanhaller merged commit 48c1db6 into jesseduffield:master Nov 1, 2025
13 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 4, 2025
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.55.1` -> `v0.56.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.56.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.56.0) [Compare Source](jesseduffield/lazygit@v0.55.1...v0.56.0) <!-- Release notes generated using configuration in .github/release.yml at v0.56.0 --> #### What's Changed ##### Enhancements 🔥 - Don't break line after footnote symbol in commit messages by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4912](jesseduffield/lazygit#4912) - Give better visual feedback when checking out the previous branch by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4929](jesseduffield/lazygit#4929) - Add merge menu with conflict resolver by [@&#8203;lmnek](https://github.com/lmnek) in [#&#8203;4889](jesseduffield/lazygit#4889) - When entering a commit in path filtering mode, select the filtered path by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4942](jesseduffield/lazygit#4942) - Document a workaround for using custom pagers on Windows by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4941](jesseduffield/lazygit#4941) - Show "Log (x of y)" in the title bar when there is more than one branch log command by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4943](jesseduffield/lazygit#4943) - Support multiple pagers by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4953](jesseduffield/lazygit#4953) - Add config option gui.skipSwitchWorktreeOnCheckoutWarning by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4964](jesseduffield/lazygit#4964) - Add no-ff merge option by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4966](jesseduffield/lazygit#4966) ##### Fixes 🔧 - Don't log the git rev-list command that we use for IsBranchMerged by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4896](jesseduffield/lazygit#4896) - Hide the cursor when the password prompt is showing by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4878](jesseduffield/lazygit#4878) - Update Merge conflicts menu keybinding to use p instead of k by [@&#8203;zingazzi](https://github.com/zingazzi) in [#&#8203;4934](jesseduffield/lazygit#4934) - Update diff of conflicted file in the main view after conflicts have been resolved by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4945](jesseduffield/lazygit#4945) - Don't depend on en\_US locale to be installed by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4949](jesseduffield/lazygit#4949) - Fix dropping submodule changes from a commit by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4937](jesseduffield/lazygit#4937) - Fix support for Git copy status when status.renames=copies by [@&#8203;kapral18](https://github.com/kapral18) in [#&#8203;4892](jesseduffield/lazygit#4892) - When pasting multi-line text into a prompt, don't treat the line feeds as "confirm" by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4955](jesseduffield/lazygit#4955) - Offer to force-delete a worktree if it contains submodules by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4959](jesseduffield/lazygit#4959) - Fix window arrangement when a popup or the search prompt is open by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4961](jesseduffield/lazygit#4961) - Fix lazygit getting unresponsive when pasting commits that become empty by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4958](jesseduffield/lazygit#4958) - Show a better error message if the temp directory is not writeable by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4968](jesseduffield/lazygit#4968) - Avoid auto-stashing when only submodules are out of date by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4969](jesseduffield/lazygit#4969) - Use a PTY when using external diff command from git config by [@&#8203;brandondong](https://github.com/brandondong) in [#&#8203;4983](jesseduffield/lazygit#4983) - Fix fixup's false filename detection in hunks containing dashed lines by [@&#8203;abobov](https://github.com/abobov) in [#&#8203;5004](jesseduffield/lazygit#5004) ##### Maintenance ⚙️ - Make running with --debug and running integration tests work when built with go 1.25 by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4910](jesseduffield/lazygit#4910) - Update go to 1.25 by [@&#8203;kyu08](https://github.com/kyu08) in [#&#8203;4844](jesseduffield/lazygit#4844) - feat(nix): add comprehensive Nix flake by [@&#8203;doprz](https://github.com/doprz) in [#&#8203;4826](jesseduffield/lazygit#4826) - Fix normalisedSelectedNodes function by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4920](jesseduffield/lazygit#4920) - Add `synchronize` event to the hooks of "Check Required Labels" by [@&#8203;kyu08](https://github.com/kyu08) in [#&#8203;4974](jesseduffield/lazygit#4974) - Use ignore directive to ignore test files not to be passes to gofumpt by [@&#8203;kyu08](https://github.com/kyu08) in [#&#8203;4936](jesseduffield/lazygit#4936) ##### Docs 📖 - Fix MoveCommitsToNewBranch description typo by [@&#8203;deventon](https://github.com/deventon) in [#&#8203;4867](jesseduffield/lazygit#4867) - Wrap long lines in comments in Config.md by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;4951](jesseduffield/lazygit#4951) - Fix keybinding cheatsheets with regard to pipe characters in key or description by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5007](jesseduffield/lazygit#5007) ##### I18n 🌎 - Update translations from Crowdin by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5005](jesseduffield/lazygit#5005) #### New Contributors - [@&#8203;deventon](https://github.com/deventon) made their first contribution in [#&#8203;4867](jesseduffield/lazygit#4867) - [@&#8203;zingazzi](https://github.com/zingazzi) made their first contribution in [#&#8203;4934](jesseduffield/lazygit#4934) - [@&#8203;doprz](https://github.com/doprz) made their first contribution in [#&#8203;4826](jesseduffield/lazygit#4826) - [@&#8203;lmnek](https://github.com/lmnek) made their first contribution in [#&#8203;4889](jesseduffield/lazygit#4889) - [@&#8203;kapral18](https://github.com/kapral18) made their first contribution in [#&#8203;4892](jesseduffield/lazygit#4892) - [@&#8203;abobov](https://github.com/abobov) made their first contribution in [#&#8203;5004](jesseduffield/lazygit#5004) **Full Changelog**: <jesseduffield/lazygit@v0.55.1...v0.56.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:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjkuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE2OS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocks-release Must be addressed before we can cut the next release bug Something isn't working

2 participants