jesseduffield.lazygit/pkg/integration/tests/commit
Stefan Haller f84ada4941 Show renamed files in the custom patch builder
When loading the files of a commit we passed --no-renames, so a rename
showed up as a separate delete and add rather than a single R entry.
That made it impossible to work with a rename that also modifies the
file: the modifications were spread across a full deletion and a full
addition instead of appearing as the handful of lines that actually
changed. The staging view already shows renames and lets you stage
their hunks, so there was no good reason for the patch builder to
differ; the flag was only there because the commit-file parser couldn't
cope with the rename record format.

Switch the commit-file loader and the per-file diff to --find-renames,
teach the parser about the rename record (a status followed by two
paths), and carry the previous path through the patch builder so the
diff for a rename is loaded with both paths, which is what makes git
emit the rename in the first place.

A whole-file selection keeps the rename in the header, so the rename
moves or is discarded together with the file's contents. A partial
selection instead strips the rename metadata and points the header at
the new path, so applying the patch only changes the contents and
leaves the rename in place; the blob index line is kept so that a 3-way
apply can still fall back to a blob merge.

Discarding a renamed file from a commit now discards both the new and
the old path, so the new file is removed and the old one is restored.

Changing the rename similarity threshold refreshes the commit files
panel too, not just the files panel, so that a rename can turn into a
delete and add or back. It is disabled while building a patch, however,
because the patch builder caches each file's diff by path and would
desync if a rename changed into a delete and add underneath it.

Finally, copying a file's diff from the commit files panel now passes
both paths for a rename, so the copied diff shows the rename instead of
a new-file add.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:05:09 +02:00
..
add_co_author.go Extract functions AddCoAuthorToMessage and AddCoAuthorToDescription 2024-03-11 09:18:40 +01:00
add_co_author_range.go feat: support range selection for commit attributes amend 2024-06-07 23:09:52 +02:00
add_co_author_while_committing.go Add integration test 2024-03-11 09:19:11 +01:00
amend.go Use sentence case everywhere 2023-05-25 23:52:19 +10:00
amend_when_there_are_conflicts_and_amend.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
amend_when_there_are_conflicts_and_cancel.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
amend_when_there_are_conflicts_and_continue.go Show confirmation menu when trying to amend changes while there are conflicts 2025-01-30 08:53:34 +01:00
auto_wrap_message.go Use getters for AppState and UserConfig instead of accessing the fields directly 2024-08-18 10:24:52 +02:00
checkout.go Switch to branches view when checking out a commit 2025-11-16 21:23:40 +01:00
checkout_file_from_commit.go Add test for checking out a file from a commit 2025-03-25 09:56:01 +01:00
checkout_file_from_range_selection_of_commits.go Fix the bug mentioned in the previous commit 2025-03-25 09:56:01 +01:00
checkout_file_with_local_modifications.go Show an error when checking out a file would overwrite local modifications 2026-01-03 20:09:55 +01:00
commit.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
commit_multiline.go Construct arg vector manually rather than parse string 2023-05-23 19:49:19 +10:00
commit_skip_hooks.go Commit without pre-commit hooks is independent on prefix 2025-03-22 11:04:28 +01:00
commit_switch_to_editor.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
commit_switch_to_editor_skip_hooks.go Commit without pre-commit hooks is independent on prefix 2025-03-22 11:04:28 +01:00
commit_wip_with_prefix.go Prefill the commit subject with the skipHook prefix when pressing w 2025-04-10 08:53:11 +02:00
commit_with_fallthrough_prefix.go feat: Support multiple commit prefixes 2025-02-17 19:58:31 +01:00
commit_with_global_prefix.go feat: Support multiple commit prefixes 2025-02-17 19:58:31 +01:00
commit_with_non_matching_branch_name.go feat: Support multiple commit prefixes 2025-02-17 19:58:31 +01:00
commit_with_prefix.go feat: Support multiple commit prefixes 2025-02-17 19:58:31 +01:00
copy_author_to_clipboard.go Cleanup: simplify and tighten test expectations related to clipboard 2025-02-19 18:50:12 +01:00
copy_message_body_to_clipboard.go Add option to copy commit message body 2025-02-17 18:43:39 +01:00
copy_tag_to_clipboard.go Cleanup: simplify and tighten test expectations related to clipboard 2025-02-19 18:50:12 +01:00
create_amend_commit.go Remove git version specific code for versions we no longer support 2025-07-09 12:18:58 +02:00
create_fixup_commit_in_branch_stack.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
create_tag.go Better tag creation UX 2023-07-22 14:36:35 +10:00
disable_copy_commit_message_body.go Add option to copy commit message body 2025-02-17 18:43:39 +01:00
discard_old_file_changes.go Make file sort order and case sensitivity configurable 2026-03-30 17:53:25 +02:00
discard_renamed_file.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
discard_submodule_changes.go Say "discard" instead of "remove" when discard changes from a commit 2026-03-07 20:47:19 +11:00
do_not_show_branch_marker_for_head_commit.go Un-deprecate UserConfig.Git.Log.Order and ShowGraph 2025-07-09 13:15:03 +02:00
fail_hooks_then_commit_no_hooks.go Commit without pre-commit hooks is independent on prefix 2025-03-22 11:04:28 +01:00
find_base_commit_for_fixup.go Fix order of fixup base commits shown in ctrl-f error message 2025-11-30 14:06:31 +01:00
find_base_commit_for_fixup_disregard_fixups_for_same_base_commit.go Ignore fixup commits for a found base commit when doing ctrl-f 2026-01-24 16:04:35 +01:00
find_base_commit_for_fixup_disregard_main_branch.go Disregard master commits when finding base commit for fixup 2024-06-10 12:00:24 +02:00
find_base_commit_for_fixup_only_added_lines.go Make find_base_commit_for_fixup tests more specific 2025-11-30 14:06:31 +01:00
find_base_commit_for_fixup_warning_for_added_lines.go Warn when there are hunks with only added lines 2024-01-10 09:11:40 +01:00
highlight.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
history.go Construct arg vector manually rather than parse string 2023-05-23 19:49:19 +10:00
history_complex.go Construct arg vector manually rather than parse string 2023-05-23 19:49:19 +10:00
keep_selected_commit_after_external_commit.go Keep selected commits stable across refreshes 2026-06-23 09:20:05 +02:00
new_branch.go Use sentence case everywhere 2023-05-25 23:52:19 +10:00
paste_commit_message.go Cleanup: simplify and tighten test expectations related to clipboard 2025-02-19 18:50:12 +01:00
paste_commit_message_over_existing.go Cleanup: simplify and tighten test expectations related to clipboard 2025-02-19 18:50:12 +01:00
preserve_commit_message.go Improve and adapt commit persistence test-cases 2025-02-07 09:28:27 +01:00
preserve_commit_message_whitespace.go Preserve whitespace when remembering a commit message 2026-04-21 18:51:17 +02:00
reset_author.go Use sentence case everywhere 2023-05-25 23:52:19 +10:00
reset_author_range.go feat: support range selection for commit attributes amend 2024-06-07 23:09:52 +02:00
revert.go Fix the main view display after reverting a commit 2025-12-23 14:55:58 +01:00
revert_merge.go Remove the "Select parent commit" prompt when reverting a merge commit 2025-04-20 16:03:06 +02:00
revert_with_conflict_multiple_commits.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
revert_with_conflict_single_commit.go Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
reword.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
search.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
set_author.go Keep track of authors across local commits and branch commits for suggestions 2023-07-22 10:47:04 +10:00
set_author_range.go feat: support range selection for commit attributes amend 2024-06-07 23:09:52 +02:00
shared.go Add section headers for rebase todos, cherry-picks, reverts, and actual commits 2025-04-20 16:06:15 +02:00
stage_range_of_lines.go Enable hunk staging mode by default 2025-08-01 10:35:16 +02:00
staged.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
staged_without_hooks.go Commit without pre-commit hooks is independent on prefix 2025-03-22 11:04:28 +01:00
unstaged.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00