-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
With stacked branches, create fixup commit at the end of the branch it belongs to #3892
Conversation
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesCodacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good feature. See comments.
One thing I'm confused about: why do we need the changeToFixup part? My understanding is that we could just use a 'pick' in the interactive rebase and it would work fine because the actual squashing down of the commit will occur later.
return nil | ||
} | ||
|
||
headOfCurrentBranchIdx := -1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This variable name suggests that it's the index of the current branch's head, but when I think 'head of current branch' I think 'the commit with an index of 0'. It's moreso talking about the head of the branch that 'owns' the commit. Not sure if there's any established lingo for that, but I'd be happy to use the term 'owner' and rename this to 'headOfOwnerBranchIdx'. At any rate I'd add a comment explaining what we're doing: finding the lowest branch in the stack that contains the commit.
Another term we could use is 'original'.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that "current" is not a good name. I guess I was thinking about the "current selected commit" or something.
Owner is a little bit better (not very much, tbh :) Changed to that in 9553e30.
Another option that I considered was "target branch".
@@ -947,6 +995,10 @@ func (self *LocalCommitsController) createAmendCommit(commit *models.Commit, inc | |||
return err | |||
} | |||
|
|||
if err := self.moveFixupCommitToCurrentBranchOfStack(commit); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Likewise I'd call this moveFixupCommitToOwnerStackedBranch
. Using Current
just makes me think about the current branch. Thoughts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed to that in 9553e30. Again, I wonder if moveFixupCommitToTargetBranch
is better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like target branch because the word 'target' seems arbitrary to me; like using 'selected' branch: it implies that something is doing the targeting and that it could have targeted something else. But a commit isn't really targeting the branch: it's owned by the branch.
I agree that 'owner' is still awkward but I think it's clearer than 'target'.
9553e30
to
54913f7
Compare
Yes exactly, but I'm reusing an existing function that unconditionally changed the 'pick' to 'fixup', because that's what we need to do for the "amend to" command. I had to make that configurable, because we don't want it here. |
Ah yes, that makes sense. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, great work
54913f7
to
b22149d
Compare
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.43.1` -> `v0.44.1` | 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.44.1`](https://github.com/jesseduffield/lazygit/releases/tag/v0.44.1) [Compare Source](jesseduffield/lazygit@v0.44.0...v0.44.1) #### What's Changed ##### Enhancements 🔥 - With stacked branches, create fixup commit at the end of the branch it belongs to by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3892 - Add options for disabling switching to the Files panel after popping or applying a stash by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3913 ##### Fixes 🔧 - Fix crash when viewing the divergence of a branch which is up to date with its upstream by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3918 ##### Performance improvements 📊 - Improve performance with large numbers of untracked or modified files by [@​parthokunda](https://github.com/parthokunda) in jesseduffield/lazygit#3919 ##### I18n 🌎 - Update language files from Crowdin by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3898 #### New Contributors - [@​parthokunda](https://github.com/parthokunda) made their first contribution in jesseduffield/lazygit#3919 **Full Changelog**: jesseduffield/lazygit@v0.44.0...v0.44.1 ### [`v0.44.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.44.0) [Compare Source](jesseduffield/lazygit@v0.43.1...v0.44.0) #### What's Changed Lots of great changes in this release. Thanks to everybody who contributed! ##### Enhancements 🔥 - Per-repo config files (and reloading of edited config files) by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3787 - In addition to the global config file you can now create repo-specific config files in `<repo>/.git/lazygit.yml`. Settings in these files override settings in the global config file. In addition, files called `.lazygit.yml` in any of the parent directories of a repo will also be loaded; this can be useful if you have settings that you want to apply to a group of repositories. - We now also automatically apply (most) config changes without the need to restart lazygit - Easily view diff across range of commits by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3869 - If you select a range of commits, we now show the diff across the range (inclusive). This makes it easy to see the total changes across a number of commits. Likewise, if you press enter when a range of commits are selected, we will show the changed files for the range. https://github.com/user-attachments/assets/6646c78b-5770-41c1-93b9-5442d32404de - Support hyperlinks from pagers by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3825 - If you're using delta as a pager (which I highly recommend trying), you can now click on line numbers to go to that line in your editor by using the following config: ```yaml git: paging: colorArg: always pager: delta --paging=never --line-numbers --hyperlinks --hyperlinks-file-link-format="lazygit-edit://{path}:{line}" ``` https://github.com/user-attachments/assets/75fef6c4-d437-4595-ab00-b8990215cfed - Switch to Files panel after popping/applying a stash by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3888 - This is a nice quality of life improvement. You generally want to go straight to the files panel after you pop or apply from the stash - Ask to auto-stage unstaged files when continuing a rebase after resolving conflicts by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3879 - Another quality of life improvement: often you resolve some conflicts, then make another couple changes, then in lazygit you say to continue and you get an error saying there are unstaged changes. Now instead of showing an error, lazygit asks if you want to stage those changes and continue. - Offer autostash option when creating new branch by [@​brandondong](https://github.com/brandondong) in jesseduffield/lazygit#3871 - Another great quality of life improvement - Allow using shell aliases in interactive custom commands by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3793 - Switch tabs with panel jump keys by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3794 - If you've already been using the number keys (1-5) for jumping to specific side panels, you'll be pleased to know that you can now also use those keys for jumping to tabs within a side panel. E.g. to go to the reflog panel, you can now press 4 to jump to the commits panel, then 4 again to go to the reflog tab. - Rename "Custom Command" to "Shell Command" by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3800 - There are two ways of invoking a 'custom' command in Lazygit: first by pre-defining a command in your config, and second by pressing ':' and typing in the command directly. We referred to both of these as 'custom commands' which was confusing. We now refer to the second approach as invoking a 'shell command'. - Improve template placeholders for custom commands by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3809 - Now you can use `SelectedCommit` to refer to the selected commit regardless of which commits panel you're in (local commits, reflog, etc) - Likewise, you can use `SelectedPath` whether you're in the files panel or the commit-files panel. - feat(custom command): support multiple contexts within one command by [@​yam-liu](https://github.com/yam-liu) in jesseduffield/lazygit#3784 - You can now use a comma-separated list of contexts for which a custom command can be invoked. For example: ```yaml customCommands: - description: 'Add empty commit' key: 'E' context: 'commits,files' ``` - Improve mouse support for commit message panel by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3836 - Make auto-staging resolved conflicts optional by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3870 - If you set `git.autoStageResolvedConflicts` to false in your config, lazygit will no longer auto-stage files in which you've resolved merge conflicts. - Allow using `<`/`>` and `,`/`.` in sticky range select mode in patch explorer by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3837 - Add Zed editor support to editorPreset by [@​susl](https://github.com/susl) in jesseduffield/lazygit#3886 ##### Fixes 🔧 - Allow GPG reword for last commit by [@​Neko-Box-Coder](https://github.com/Neko-Box-Coder) in jesseduffield/lazygit#3815 - Don't exit app when GetRepoPaths call fails during startup by [@​ppoum](https://github.com/ppoum) in jesseduffield/lazygit#3779 - Fix lack of icon when extension isn't lowercase by [@​hasecilu](https://github.com/hasecilu) in jesseduffield/lazygit#3810 - Fix redraw bug (stale content) in commits view by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3783 - Fix line coloring when using the delta pager by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3820 - Fix pressing escape after clicking in diff view by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3828 - Fix fast-forward issue caused by a conflicting tag name [@​Neko-Box-Coder](https://github.com/Neko-Box-Coder) in jesseduffield/lazygit#3807 - Fix range select -> stage failure when deleted file is already staged by [@​brandondong](https://github.com/brandondong) in jesseduffield/lazygit#3631 - Scroll views up if needed to show all their content by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3839 - Fix crash when filtering commits by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3838 - Fix cancelled autostash resulting in stuck inline status by [@​brandondong](https://github.com/brandondong) in jesseduffield/lazygit#3860 - Don't allow opening a menu while the search or filter prompt is open by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3878 ##### Maintenance ⚙️ - Reapply "Check for fixup commits on CI" by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3745 - Some cleanups for APIs related to contexts by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3808 - Improve fixup commits script by [@​jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#3853 - Fix linter warnings by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3854 - Add codespell support (config, workflow to detect/not fix) and make it fix few typos by [@​yarikoptic](https://github.com/yarikoptic) in jesseduffield/lazygit#3751 - Get rid of a lot of error return values by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3890 - Add a readme file for the JSON files in pkg/i18n/translations by [@​stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3781 #### New Contributors - [@​yam-liu](https://github.com/yam-liu) made their first contribution in jesseduffield/lazygit#3784 - [@​ppoum](https://github.com/ppoum) made their first contribution in jesseduffield/lazygit#3779 - [@​Neko-Box-Coder](https://github.com/Neko-Box-Coder) made their first contribution in jesseduffield/lazygit#3815 - [@​yarikoptic](https://github.com/yarikoptic) made their first contribution in jesseduffield/lazygit#3751 - [@​susl](https://github.com/susl) made their first contribution in jesseduffield/lazygit#3886 **Full Changelog**: jesseduffield/lazygit@v0.43.1...v0.44.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:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
When working with stacked branches, and creating a fixup commit for a commit in one of the lower branches of the stack, the fixup was created at the top of the stack and the user needed to move it down to the right branch manually. This is unnecessary extra work; create it at the end of the right branch automatically.
go generate ./...
)