Skip to content
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

Divergence from base branch display #3613

Merged
merged 7 commits into from
Jun 3, 2024

Conversation

stefanhaller
Copy link
Collaborator

  • PR Description

Add a new config option showDivergenceFromBaseBranch; if not "none", it indicates in the branches view for each branch if it has fallen behind its base branch, and optionally by how much. If set to "onlyArrow", it will append after the branch status; if set to "arrowAndNumber", it appends ↓17, where the count indicates how many commits it is behind the base branch. These are colored in blue, and go after the existing yellow ↓3↑7 indication of divergence from the upstream.

The option is off by default, since we are afraid that people may find this too noisy. We may reconsider this choice in the future if the response is positive.

  • 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)
  • Docs have been updated if necessary
  • You've read through your own file changes for silly mistakes etc

@stefanhaller stefanhaller added the enhancement New feature or request label May 29, 2024
}

t := time.Now()
errg := errgroup.Group{}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I decided to remove the SetLimit(10) call here again; it no longer seems to be necessary, now that we delay this until after the branches have been loaded the second time. Let me know if you disagree.

Copy link

codacy-production bot commented May 29, 2024

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
Report missing for 74925211 93.36%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (7492521) Report Missing Report Missing Report Missing
Head commit (c6113f6) 51359 43262 84.23%

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#3613) 271 253 93.36%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Codacy will stop sending the deprecated coverage status from June 5th, 2024. Learn more

Footnotes

  1. Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.

Copy link
Owner

@jesseduffield jesseduffield left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work, left some comments

@@ -127,6 +127,8 @@ type GuiConfig struct {
CommitHashLength int `yaml:"commitHashLength" jsonschema:"minimum=0"`
// If true, show commit hashes alongside branch names in the branches view.
ShowBranchCommitHash bool `yaml:"showBranchCommitHash"`
// Whether to show the divergence from the base branch in the branches view.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the comment we should specify the available values because it's not clear from reading Config.md what those values are. At some point we should also just have that derived from the type in UserConfig: right now it needs to be stated separately.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True; added in 3f6cf80.

if err != nil {
return err
}
aheadBehindStr := strings.Split(strings.TrimSpace(output), "\t")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the idea here that the ahead value is before the tab and the behind value is after? If so can we capture that fact in a comment

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes; added a comment in 5db3af2.

(It's a joy to use ctrl-f on a change like this, and it just works. 😄)

}

err := errg.Wait()
self.Log.Infof("time to get behind base branch values for all branches: %s", time.Since(t))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can make this a debug log now that we don't need it so much

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right; changed in 9de4d45.

)

type ExistingMainBranches struct {
configuredMainBranches []string
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a comment against configuredMainBranches and existingBranches explaining what they are? I had to read through this file before I made sense of it. Also I think either both fields should have the word 'main' in them or neither: I thought that 'existingBranches' was all local branches in the repo because it didn't have the word 'main' in it but 'configuredMainBranches' did. I honestly reckon we should just rename 'existingBranches' to 'existingMainBranches'.

Of course, it's a bit awkward to have a field named the same as the struct itself. Perhaps we should call the struct 'MainBranches'.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like MainBranches; renamed in e702411, and also added a few comments.

This one was an interesting exercise for ctrl-f. Just hitting ctrl-f didn't work of course, because the changes needed to go into 5 different commits. I tried to run git-absorb on all changes at once, and it did manage to create 5 fixup commits automatically. However, some of them were wrong, i.e. after squashing the fixups, some commits didn't compile. Creating the fixups manually one by one using ctrl-f was more work because I had to stage the changes that belong together, but the result was then correct.

// How far we have fallen behind our base branch. 0 means either not
// determined yet, or up to date with base branch. (We don't need to
// distinguish the two, as we don't draw anything in both cases.)
BehindBaseBranch atomic.Int32
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What was the rationale behind making this atomic?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is read and written concurrently, so a plain int would be wrong. Granted, on most modern processor architectures a plain int would probably work fine in practice, but it's better not to rely on that. And running with the -race option would very likely flag it as an error.

I also think that using atomic values can probably help solve many of the other concurrency issues we have. I talked a few times about my plan to restructure our code so that all changes to the model are only done on the main thread, but I no longer think that's the best approach; using atomic values for the model slices should make it possible to update them safely from background threads without having to do use a mutex. But that's for another day...

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. I still feel that having a concurrency model with fewer mutexes/atomics would be preferable to one where it's more fine-grained, but let's not get bogged down in that now.

} else if branch.RemoteBranchNotStoredLocally() {
result = style.FgMagenta.Sprint("?")
} else if branch.IsBehindForPull() && branch.IsAheadForPull() {
result = style.FgYellow.Sprintf("↓%s↑%s", branch.BehindForPull, branch.AheadForPull)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm against this change for a few reasons:

  • the original order is more intuitive for me (if only via familiarity)
  • there is no standard ordering in place across git clients so this doesn't make us any more standard (which would have been a good reason otherwise)
  • Lazygit users will have become accustomed to the existing ordering and may find it jarring if it's changed.

That third point is my main gripe: I suggest that we should create an issue for this specifically and see what other people think: if a wide majority share your perspective we can change it. But I'd leave it out of this PR

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me ask you: did you even notice the change yourself before you read about it in the PR? Please be honest 😄. The change was in the prototype from the very beginning.

I'd like to avoid having to do the extra work of backing out the change again and making a separate issue and PR; I personally feel the change is so insignificant that it's not worth it.

BTW, I looked again at all the git clients I have on my machine: VS Code, Fork, and Sublime Merge. They all show first. The only counter example I could find is git itself in its "git status" and "git branch -v" output, but that one doesn't use arrows.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me ask you: did you even notice the change yourself before you read about it in the PR? Please be honest 😄. The change was in the prototype from the very beginning.

That is a very good question haha. I definitely noticed the commit on the branch before I saw the change in this pull request, and I definitely noticed that commit before I noticed the change in the UI itself, but I don't have the counterfactual of how I would respond otherwise.

Alas, happy to just YOLO this one and see if anybody (including myself) find it jarring upon release

@jesseduffield
Copy link
Owner

jesseduffield commented Jun 1, 2024

I'm happy with the code, but I'm getting a bug when testing:

image

Each branch is reported as being behind the base branch, but that includes master, which is definitely not behind origin/master!

The issue went away after I removed my assets worktree (which was attached to the assets branch) and then restarted lazygit, but I don't know if simply restarting lazygit is what fixed it. I can't re-create the issue.

@stefanhaller
Copy link
Collaborator Author

Each branch is reported as being behind the base branch, but that includes master, which is definitely not behind origin/master!

Wow, that's bad. I have no idea how that could happen; would have been good to debug it on your machine when it was still there. Now that it's not recreatable, I'm not sure what to do about it...

@jesseduffield
Copy link
Owner

I'm not too fussed: given it's an opt-in feature I'm happy for us to merge and I'll just dig deeper next time (if) it happens

@karimkhaleel
Copy link
Contributor

I played around with the feature and I like it. Is there any way I can get it to update after rebasing without having to restart lazygit?

lazygit-divergence-from-main-display.mp4

@stefanhaller
Copy link
Collaborator Author

Is there any way I can get it to update after rebasing without having to restart lazygit?

If it doesn't do that automatically, that would be a bug of course. It does for me, so it would be important to figure out under what conditions it doesn't. Maybe it is related to the problem Jesse was seeing.

I'll hold off merging for now, until we know more about this. If you can do more testing and somehow narrow it down, that would be awesome.

@stefanhaller stefanhaller force-pushed the divergence-from-base-branch-display branch from c6113f6 to cb0a9a7 Compare June 1, 2024 17:57
Copy link

codacy-production bot commented Jun 1, 2024

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
Report missing for 7c51ec21 93.77%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (7c51ec2) Report Missing Report Missing Report Missing
Head commit (373b197) 51603 43535 84.37%

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#3613) 273 256 93.77%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Codacy will stop sending the deprecated coverage status from June 5th, 2024. Learn more

Footnotes

  1. Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.

@stefanhaller
Copy link
Collaborator Author

@karimkhaleel I'd like to make progress on this, but I don't know how. From your video above, it looks like the "behind base branch" indicators are correct right after startup, but then never update again, neither when you make commits nor when you rebase a branch. Is that true, and is that always the behavior you see, or only sometimes? In all repos, or only in certain ones?

Maybe I need to add some more logging so that we can get to the bottom of this, but I'm not even sure which conditions to look for.

@karimkhaleel
Copy link
Contributor

I did a little bit of testing, and so far I haven't been able to get it to behave correctly.

  • I tried with local only repos, and I tried with repos that were following a branch on github.
  • I removed all of my lazygit settings except for showDivergenceFromBaseBranch: arrowAndNumber under gui.
  • I tried this on an M1 macbook, and on an x86_64 machine running a flavor of ubuntu.

I did some more testing, and I am seeing the same behavior again.

go version go1.22.3 linux/amd64
commit=cb0a9a732cb023f86f8fc294ca27a69cdd8cc7c5, build date=2024-06-01T17:57:24Z, build source=unknown, version=cb0a9a73, os=linux, arch=amd64, git version=2.34.1
gui:
  showDivergenceFromBaseBranch: arrowAndNumber
lazygit-divergence-from-main-display-2.mp4

Any other things I can try?

Use Equals instead of Contains for asserting the status view content. This
solves the problem that we might assert Contains("↓2 repo"), but what it really
shows is "↑1↓2 repo", and the test still succeeds. At best this is confusing.

Also, this way we don't have to use the awkward DoesNotContain to check that it
really doesn't show a checkmark.

To do this, we need to fix two whitespace problems:
- there was always a space at the end for no reason. Simply remove it. It was
  added in efb51ee, but from looking at that diff it seems it was added
  accidentally.
- there was a space at the beginning if the branch status was empty. This is
  actually a cosmetic problem, for branches without a status the text was
  indented by once space. Change this so that the space is added conditionally.
  It's a bit awkward that we have to use Decolorise here, but this will go away
  again later in this branch.
It is a valid case for a branch to share no history with any of the main
branches, in which case git merge-base returns an error (and an empty string).
Since we can't distinguish this from one of the main branches having been
deleted, we shouldn't invalidate the cache in that case.
Previously the entire status was colored in a single color, so the API made
sense. This is going to change in the next commit, so now we must include the
color in the string returned from BranchStatus(), which means that callers who
need to do hit detection or measure the length need to decolorize it.

While we're at it, switch the order of ↑3↓7 to ↓7↑3. For some reason that I
can't really explain I find it more logical this way. The software out there is
pretty undecided about it, it seems: VS Code puts ↓7 first, and so does the
shell prompt that comes with git; git status and git branch -v put "ahead" first
though. Shrug.
@stefanhaller stefanhaller force-pushed the divergence-from-base-branch-display branch from cb0a9a7 to aaa4578 Compare June 3, 2024 11:03
@stefanhaller
Copy link
Collaborator Author

@karimkhaleel Thanks for testing again.

What a stupid bug, updating the counts just didn't work at all when local branches are sorted by recency. Since I sort my branches by date, I didn't notice.

aaa4578 should fix it, could you test again?

@jesseduffield I'm pretty sure this was also the reason for the bug you reported above.

@@ -267,9 +267,11 @@ func (self *RefreshHelper) refreshReflogCommitsConsideringStartup() {
}

func (self *RefreshHelper) refreshReflogAndBranches(refreshWorktrees bool, keepBranchSelectionIndex bool) {
loadBehindCounts := self.c.State().GetRepoState().GetStartupStage() == types.COMPLETE
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jesseduffield It's a bit unfortunate that the StartupState stuff is no longer handled only inside of refreshReflogCommitsConsideringStartup. I'm not sure if this bothers you; if it does, I suppose we could return a bool from the function. Not sure that makes the logic clearer, but let me know what you prefer.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not bothered, your approach is fine

@karimkhaleel
Copy link
Contributor

aaa4578 should fix it, could you test again?

It works! Awesome!

@stefanhaller stefanhaller force-pushed the divergence-from-base-branch-display branch from aaa4578 to 373b197 Compare June 3, 2024 11:59
@stefanhaller stefanhaller merged commit 4ac77f4 into master Jun 3, 2024
13 of 14 checks passed
@stefanhaller stefanhaller deleted the divergence-from-base-branch-display branch June 3, 2024 12:01
stefanhaller added a commit that referenced this pull request Jun 3, 2024
…3614)

- **PR Description**

Add a command similar to the existing "Show divergence from upstream",
but for the base branch instead. Useful to see what you would rebase
onto if you were to rebase onto the base branch now.

It could be considered somewhat questionable that we display both the
Remote and Local sections of the log here; the Local section isn't
really interesting because it's always identical to what you see in the
Commits view. I chose to still show it since it makes the divergence
view look more familiar, and I think overall it makes it clearer what
you're looking at.

This is sitting on top of #3613 and uses some of the code that was added
there.

- **Please check if the PR fulfills these requirements**

* [x] Cheatsheets are up-to-date (run `go generate ./...`)
* [x] Code has been formatted (see
[here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#code-formatting))
* [x] Tests have been added/updated (see
[here](https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md)
for the integration test guide)
* [x] Text is internationalised (see
[here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#internationalisation))
* [x] Docs have been updated if necessary
* [x] You've read through your own file changes for silly mistakes etc
@georgeguimaraes
Copy link

I really liked this, tks for coding it

renovate bot added a commit to d-issy/dotfiles that referenced this pull request Jul 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [jesseduffield/lazygit](https://togithub.com/jesseduffield/lazygit) |
minor | `v0.42.0` -> `v0.43.1` |

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/jesseduffield/lazygit/compare/v0.43.0...v0.43.1)

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

#### What's Changed

##### Fixes 🔧

- Fix language auto detection by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3744

**Full Changelog**:
jesseduffield/lazygit@v0.43.0...v0.43.1

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

[Compare
Source](https://togithub.com/jesseduffield/lazygit/compare/v0.42.0...v0.43.0)

#### What's Changed

Thanks to all contributors who helped make this release happen! There's
a lot of first-time contributors on this release as well so kudos to you
all.

There's quite a few things in this release. I'm going to single out a
couple that have changed my workflow.

##### Base branch stuff


https://github.com/user-attachments/assets/9f50824a-6221-4ca0-9cf3-a4d45cc43262

##### Easier rebase onto base branch

*(Add command to rebase onto base branch by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3615

When my feature branch gets out of date with the main branch, I like to
rebase it onto the main branch. Up until now, that's required:

-   Navigating to the main branch
-   Pressing 'f' to fast-forward it onto its upstream branch
-   Pressing 'r' to rebase the checked-out branch onto the main branch

That takes too long! Now you can just press 'r' followed by 'b' to
rebase onto the base branch (which defaults to origin/main).

##### See the divergence count from the base branch

*(Divergence from base branch display by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3613

You can now also configure to see the divergence from a branch and its
base branch with the following config:

```yml
gui:
    showDivergenceFromBaseBranch: arrowAndNumber # or 'onlyArrow'
```

This shows the divergence count in blue, next to the yellow count of
divergence from the upstream branch. This is admittedly noisy, so it's
an opt-in feature. But I think the noise is worth it.

If you set the config value to 'onlyArrow' it's a lot less noisy:

<img width="891" alt="image"
src="https://github.com/user-attachments/assets/470cb003-8fc6-4a72-aa04-6e228c49f381">

##### See detailed divergence from base branch

*(Add command to show divergence from base branch as a left-right log by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3614

By pressing 'u' then 'b' on a branch you can see the divergence view for
that branch compared to its base branch

##### Improved 'Find commit for fixup' feature

*(Improve the "Find base commit for fixup" command by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3602

'Find commit for fixup' is not a very catchy name for this feature but I
can't think of anything better at the moment. Nevertheless! The idea is
that you often want to know for a given set of changes, which commit
ought they be included in? Just press `ctrl+f` when in the files panel
and lazygit will jump the cursor to the appropriate commit to fixup.

With this release, the feature is smarter and more lenient so it's more
likely to find you a match. If you haven't tried this out you should
really give it a go!


https://github.com/user-attachments/assets/220e4190-b631-40a5-b8dc-7d1a6116ab09

##### Other Enhancements 🔥

- Add Squash merge by
[@&#8203;noahfraiture](https://togithub.com/noahfraiture) in
[jesseduffield/lazygit#3566
- Now when you press `shift+m` you get the option to do a regular merge
or a squash merge. If you already have muscle memory for regular merge;
don't worry: it's the same sequence of keypresses.
- Improve "Find base commit for fixup" command when there are changes
for master commits by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3645
- Allow setting the similarity threshold for detecting renames by
[@&#8203;isti115](https://togithub.com/isti115) in
[jesseduffield/lazygit#3025
- For this, press ')' and '(' to increase/decrease the similarity
threshold.


https://github.com/user-attachments/assets/a85825b8-9110-4090-ba89-ba8221cbc7a8

- Reduce memory consumption when loading large number of commits by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3687
- 2-6x less memory usage when dealing with lots of commits. HUGE
improvement.
- Focus on local commits view after moving code into new commit by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[jesseduffield/lazygit#3577
- Add property outputTitle to CustomCommand by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3579
- Add user config `gui.expandedSidePanelWeight` by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3623
- You can now increase the height of the selected side panel when you've
configured the accordion effect
    ```yml
    gui:
      expandFocusedSidePanel: true
      expandedSidePanelWeight: 3
    ```

<img width="891" alt="image"
src="https://github.com/user-attachments/assets/8a47bd1c-67b0-4d2f-a885-56e6a07ece12">

- Support range select for amending commit attributes by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[jesseduffield/lazygit#3587
- This lets you select a range of commits and update the author / set
the co-author on all of them at once.


https://github.com/user-attachments/assets/2d3e15a9-4acc-4b81-b0e2-a34490ad77ad

- Show "exec" todos in the list of rebase todos by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3654
- Search the model instead of the view in the commits panel by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3642
- Add prompt to the remote branch checkout menu by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3652
- Always show the "Discard unchanged changes" menu item by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3683
- Show current value in menus by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3628
- Add command to paste commit message from clipboard by
[@&#8203;WaterLemons2k](https://togithub.com/WaterLemons2k) in
[jesseduffield/lazygit#3676
- Stagger popup panels by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3694
- Make commit author length configurable by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3688
(initial implementation by
[@&#8203;anikiforov](https://togithub.com/anikiforov))
- Make opening git difftool more consistent by
[@&#8203;part22](https://togithub.com/part22) in
[jesseduffield/lazygit#3691
- Update tracking behaviour for branches created from remote branches by
[@&#8203;part22](https://togithub.com/part22) in
[jesseduffield/lazygit#3712
- Allow setting a default name when creating new branches by
[@&#8203;elliotcubit](https://togithub.com/elliotcubit) in
[jesseduffield/lazygit#3487
- Add Token credential request handling by
[@&#8203;gmlexx](https://togithub.com/gmlexx) in
[jesseduffield/lazygit#3647
- Switch between multiple log views by
[@&#8203;mkock](https://togithub.com/mkock) in
[jesseduffield/lazygit#3354
- Faster startup by [@&#8203;jwhitley](https://togithub.com/jwhitley) in
[jesseduffield/lazygit#3284
- Extend icon coverage on remotes and file extensions by
[@&#8203;hasecilu](https://togithub.com/hasecilu) in
[jesseduffield/lazygit#3484
- Add nerdfont icons for .bicep & .bicepparam files by
[@&#8203;scottmckendry](https://togithub.com/scottmckendry) in
[jesseduffield/lazygit#3053

##### Fixes 🔧

- Fix tooltip for fixup command by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3601
- Fix pushing to branch when upstream not stored locally by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3619
-
([#&#8203;3618](https://togithub.com/jesseduffield/lazygit/issues/3618))
Fix pushing a branch to remote with a different name causing error by
[@&#8203;JordanllHarper](https://togithub.com/JordanllHarper) in
[jesseduffield/lazygit#3630
- Fix secondary window resize by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[jesseduffield/lazygit#3637
- Fix truncation of branch names containing non-ASCII characters by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3685
- Fix duplicate keybinding suggestions in status bar after switching
repos by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3660
- Fix PTY layout problems by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3658
- Fix custom patch operations for added files by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3684
- Improve render performance by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3686
- Fix wrong highlight in staging panel when entering file with only
staged changes by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3667
- Always reapply filters on filtered views when model changes, even
inactive ones by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3697
- Turn off the highlight of the suggestions panel when it loses focus by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3696
- Fix running lazygit with a language other than English on Windows by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3705
- Fix multi selection stage/discard not working for files with
substrings by [@&#8203;brandondong](https://togithub.com/brandondong) in
[jesseduffield/lazygit#3599
- Only add commit prefix if branch name matches regex pattern by
[@&#8203;phaze-ZA](https://togithub.com/phaze-ZA) in
[jesseduffield/lazygit#3703

##### Maintenance ⚙️

- Add default lazygit config generation in Config.md from JSON schema by
[@&#8203;karimkhaleel](https://togithub.com/karimkhaleel) in
[jesseduffield/lazygit#3565
- Remove hint about Config.md from PR template by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3578
- Add `copyloopvar` to enabled linters by
[@&#8203;kyu08](https://togithub.com/kyu08) in
[jesseduffield/lazygit#3586
- Add `lint` to make target by
[@&#8203;kyu08](https://togithub.com/kyu08) in
[jesseduffield/lazygit#3593
- Delete the TODO comment about enabling `goconst` in the future from
`.golangci.yml` by [@&#8203;kyu08](https://togithub.com/kyu08) in
[jesseduffield/lazygit#3596
- Pin golangci version to 1.58 by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3611
- Improve branch and reflog loading when sorting branches by date by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3609
- Fix boolean config keys not appearing in the generated Config.md by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3622
- Make profiling easier by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3634
- Update `rebase_onto` demo test to match new the rebase menu title by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[jesseduffield/lazygit#3636
- Include demos when running integration tests on CI by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3640
- Fix reporting of unexpected selections in integration tests by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3662
- Convert TranslationSets to json by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3649
- Fix go generate on windows by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3706
- Update translations from Crowdin by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[jesseduffield/lazygit#3707
- Bump `actions/checkout`, `actions/setup-go`, `actions/cache/restore`,
`actions/cache/save` by [@&#8203;kyu08](https://togithub.com/kyu08) in
[jesseduffield/lazygit#3594
- Check for fixup commits on CI by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[jesseduffield/lazygit#3742

##### Docs 📖

- Upgrade to Alpine Linux v3.19 by
[@&#8203;fossdd](https://togithub.com/fossdd) in
[jesseduffield/lazygit#3541
- Add flox install by
[@&#8203;bryanhonof](https://togithub.com/bryanhonof) in
[jesseduffield/lazygit#3656

#### New Contributors

- [@&#8203;JordanllHarper](https://togithub.com/JordanllHarper) made
their first contribution in
[jesseduffield/lazygit#3630
- [@&#8203;anikiforov](https://togithub.com/anikiforov) made their first
contribution in
[jesseduffield/lazygit#3625
- [@&#8203;WaterLemons2k](https://togithub.com/WaterLemons2k) made their
first contribution in
[jesseduffield/lazygit#3676
- [@&#8203;noahfraiture](https://togithub.com/noahfraiture) made their
first contribution in
[jesseduffield/lazygit#3566
- [@&#8203;fossdd](https://togithub.com/fossdd) made their first
contribution in
[jesseduffield/lazygit#3541
- [@&#8203;scottmckendry](https://togithub.com/scottmckendry) made their
first contribution in
[jesseduffield/lazygit#3053
- [@&#8203;elliotcubit](https://togithub.com/elliotcubit) made their
first contribution in
[jesseduffield/lazygit#3487
- [@&#8203;bryanhonof](https://togithub.com/bryanhonof) made their first
contribution in
[jesseduffield/lazygit#3656
- [@&#8203;gmlexx](https://togithub.com/gmlexx) made their first
contribution in
[jesseduffield/lazygit#3647
- [@&#8203;mkock](https://togithub.com/mkock) made their first
contribution in
[jesseduffield/lazygit#3354
- [@&#8203;phaze-ZA](https://togithub.com/phaze-ZA) made their first
contribution in
[jesseduffield/lazygit#3703
- [@&#8203;hasecilu](https://togithub.com/hasecilu) made their first
contribution in
[jesseduffield/lazygit#3484

**Full Changelog**:
jesseduffield/lazygit@v0.42.0...v0.43.0

#### Shameless Plug

I (Jesse) quit my day job and co-founded Subble, a startup that helps
your company manage its SaaS subscriptions (discovery of subscriptions,
onboarding/offboarding etc) to save you time and money. Check it out!
https://www.subble.com/

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

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

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/d-issy/dotfiles).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants