jesseduffield.lazygit/pkg
Stefan Haller 1fdcc29277 Fix deleting update-ref todos
It is a bad idea to read a git-rebase-todo file, remove some update-ref todos,
and write it back out behind git's back. This will cause git to actually remove
the branches referenced by those update-ref todos when the rebase is continued.

The reason is that git remembers the refs affected by update-ref todos at the
beginning of the rebase, and remembers information about them in the file
.git/rebase-merge/update-refs. Then, whenever the user performs a "git rebase
--edit-todo" command, it updates that file based on whether update-ref todos
were added or removed by that edit. If we rewrite the git-rebase-todo file
behind git's back, this updating doesn't happen.

Fix this by not updating the git-rebase-todo file directly in this case, but
performing a "git rebase --edit-todo" command where we set ourselves as the
editor and change the file in there. This makes git update the bookkeeping
information properly.

Ideally we would use this method for all cases where we change the
git-rebase-todo file (e.g. moving todos up/down, or changing the type of a
todo); this would be cleaner because we wouldn't mess with git's private
implementation details. I tried this, but unfortunately it isn't fast enough.
Right now, moving a todo up or down takes between 1 and 2ms on my machine;
changing it to do a "git rebase --edit-todo" slows it down to over 100ms, which
is unacceptable.
2024-03-26 22:29:56 +01:00
..
app Fix deleting update-ref todos 2024-03-26 22:29:56 +01:00
cheatsheet Render keybinding cheatsheet as markdown table 2024-01-28 08:12:01 +11:00
commands Fix deleting update-ref todos 2024-03-26 22:29:56 +01:00
common Add AppState to common.Common 2023-09-04 17:48:39 +02:00
config Fix container detection 2024-03-22 13:42:15 +01:00
constants Make the links in the status panel point to the current version rather than master 2024-03-22 08:13:59 +01:00
env Support bare worktrees where worktree does not have its own .git file 2023-08-07 22:40:53 +10:00
fakes cleanup integration test code 2023-02-26 12:54:13 +11:00
gui Set the TERM env variable 2024-03-23 23:46:37 +01:00
i18n Change CopiedToClipboard text to start lower-case 2024-03-22 09:59:46 +01:00
integration Fix deleting update-ref todos 2024-03-26 22:29:56 +01:00
jsonschema Add UserConfig jsonschema generation script 2023-12-02 10:46:24 +01:00
logs Remove secureexec package 2023-07-30 19:59:51 +10:00
snake integrate snake game into lazygit 2022-12-30 12:18:59 +11:00
tasks Refactor repo_paths.go to use git rev-parse 2024-01-24 08:40:01 +01:00
theme Standardise display of range selection across views 2024-01-19 10:47:21 +11:00
updates Construct arg vector manually rather than parse string 2023-05-23 19:49:19 +10:00
utils Fix deleting update-ref todos 2024-03-26 22:29:56 +01:00