-
-
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
Add worktrees view #2147
Add worktrees view #2147
Conversation
Wow! Didn't expect that you'd pick up on all the current patterns. Code looks pretty good so far, I'll try to find time on the weekend to give it a more thorough review |
Thanks! I have a few thoughts regarding worktree support
|
I'll add my two cents.
It does, IMO it's at the same level as submodules, as far as functionality and options go.
Maybe it would also be good to have them in the
Sounds like a big step forward having just those few commands. We could always add more later.
Just denote them somehow special and give the user an error when they try to switch to it?
Uhhh... how often is that used?
I guess we could do the same as the Sorta kinda related question, since it looks like you've used |
|
Well we can have both. Have the
Or that, yeah.
Huh, maybe it was a messup on my side. I tried using an additional worktree with several gigabytes of data in |
@mark2185 There are a few things I'd like feedback on in this image
|
That seems good enough, I've used that panel exactly 0 times so I'm fine either way.
Could we use the current working directory as it's name? As in, if the user just clones a repo, it'll be called e.g.
That doesn't seem like a big issue. I don't know many people who use multiple worktrees so I don't have anyone to ask, but if I were creating multiple trees, I'd make sure they are not in folders of the same name.
Seems reasonable.
Also, I wouldn't hide invalid worktrees, I'd just mark them |
Good points. I have already added filtering out of the worktree, but I can add them back, style them red, and then check on enter to ensure the target location exists. Also, I had to add back the check you called out in the Branches loader as it is needed to not filter out branches which are not checked out. |
Looks good! Does it also handle out-of-source worktrees just as well? |
What do you mean by "out of source"? |
All of these worktrees were created within your |
Things remaining:
|
efd8465
to
1609b4a
Compare
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.
Looking great so far. Left some feedback
d73be3f
to
6452caf
Compare
@jesseduffield Addressed all open comments |
pkg/commands/loaders/worktrees.go
Outdated
} | ||
|
||
func (self *WorktreeLoader) GetWorktrees() ([]*models.Worktree, error) { | ||
worktreesOutput, err := self.cmd.New(`git worktree list --porcelain -z`).DontLog().RunWithOutput() |
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.
Speaking of compatibility, we have a compatibility requirement with git v2.0+, and it's worth considering if any of this PR doesn't work with git v2.0. I know magit supports as early as 2.4, so I'm happy to bump up the minimum required version to 2.4 if necessary for anything in this PR.
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.
Based on 2 google searches, worktrees were introduced in v2.5, so...
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.
shiiieeet haha
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.
In that case I reckon we just need to only run our worktree code if we're on at least 2.5, otherwise we hide the worktree tab
@kadaan thanks for waiting, I'm gonna give this another review this weekend |
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'm midway through a review but I need to submit it to respond to @mark2185 's comments
return self.c.Prompt(types.PromptOpts{ | ||
Title: self.c.Tr.NewWorktreePath, | ||
HandleConfirm: func(response string) error { | ||
self.c.LogAction(self.c.Tr.Actions.CreateWorktree) |
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.
Can we wrap this in a loader, given it takes a couple seconds for me. Have a look at WithWaitingStatus
func (self *WorktreeHelper) IsCurrentWorktree(w *models.Worktree) bool { | ||
pwd, err := os.Getwd() | ||
if err != nil { | ||
log.Fatalln(err.Error()) |
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.
Can we add context to this error e.g. 'failed to determine a given worktree is the current worktree'. Given we're not panicking here, it's good to have something that's easy to search for within the codebase to see where it's failing.
pkg/commands/loaders/worktrees.go
Outdated
} | ||
|
||
func (self *WorktreeLoader) GetWorktrees() ([]*models.Worktree, error) { | ||
worktreesOutput, err := self.cmd.New(`git worktree list --porcelain -z`).DontLog().RunWithOutput() |
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.
shiiieeet haha
pkg/commands/loaders/worktrees.go
Outdated
} | ||
|
||
func (self *WorktreeLoader) GetWorktrees() ([]*models.Worktree, error) { | ||
worktreesOutput, err := self.cmd.New(`git worktree list --porcelain -z`).DontLog().RunWithOutput() |
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.
In that case I reckon we just need to only run our worktree code if we're on at least 2.5, otherwise we hide the worktree tab
Some more things I noted from locally testing:
|
pkg/gui/list_context_config.go
Outdated
}) | ||
}, | ||
nil, | ||
gui.withDiffModeCheck(gui.worktreesRenderToMain), |
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.
no need for the diff mode check: that's more applicable to things like branches/commits
@@ -59,3 +61,13 @@ func IconForRemote(remote *models.Remote) string { | |||
} | |||
return DEFAULT_REMOTE_ICON | |||
} | |||
|
|||
func IconForWorktree(worktree *models.Worktree, missing bool) string { | |||
if worktree.Main() { |
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 would show LINKED_WORKTREE_ICON even for the main worktree, so long as we also show the green asterisk
pkg/gui/presentation/worktrees.go
Outdated
"github.com/jesseduffield/lazygit/pkg/theme" | ||
) | ||
|
||
func GetWorktreeDisplayString(isCurrent bool, isPathMissing bool, worktree *models.Worktree) []string { |
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.
func GetWorktreeDisplayString(isCurrent bool, isPathMissing bool, worktree *models.Worktree) []string { | |
func GetWorktreeDisplayStrings(isCurrent bool, isPathMissing bool, worktree *models.Worktree) []string { |
pkg/gui/refresh.go
Outdated
@@ -554,6 +571,10 @@ func (gui *Gui) refreshStatus() { | |||
|
|||
name := presentation.GetBranchTextStyle(currentBranch.Name).Sprint(currentBranch.Name) | |||
repoName := utils.GetCurrentRepoName() | |||
mainWorktreeName := gui.helpers.Worktree.GetMainWorktreeName() | |||
if repoName != mainWorktreeName { | |||
repoName = fmt.Sprintf("%s(%s)", mainWorktreeName, style.FgBlue.Sprint(repoName)) |
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'd use something other than blue given it can be hard to see on some screens (we typically use blue for unimportant stuff but I think it's important to show what worktree the user is in). How bout magenta?
Our min required git version is 2.20 so there's no need to add guards for worktrees because they were added in 2.5
We now always re-use the state of the repo if we're returning to it, and we always reset the windows to their default tabs. We reset to default tabs because it's easy to implement. If people want to: * have tab states be retained when switching * have tab states specific to the current repo retained when switching back Then we'll need to revisit this
This fixes pkg/integration/tests/worktree/rebase.go which was failing on old git versions due to a difference in order of branches that don't have recency values
We're doing all the IO in our workers loader method so that we don't need to do any in our presentation code
There are quite a few paths you might want to get e.g. the repo's path, the worktree's path, the repo's git dir path, the worktree's git dir path. I want these all obtained once and then used when needed rather than having to have IO whenever we need them. This is not so much about reducing time spent on IO as it is about not having to care about errors every time we want a path.
I would prefer to use methods to keep things immutable but I'd rather be consistent with the other models and update them all at once
We want to be using forward slashes everywhere internally, so if we get a path from windows we should immediately convert it to use forward slashes. I'm leaving out the recent repos list because that would require a migration
…nches When switching worktrees (which we can now do via the branch view) we re-layout the windows and their views. We had the worktree view ahead of the file view based on the Flatten() method in context.go, because it used to be associated with the branches panel.
Afero is a package that lets you mock out a filesystem with an in-memory filesystem. It allows us to easily create the files required for a given test without worrying about a cleanup step or different tests tripping on eachother when run in parallel. Later on I'll standardise on using afero over the vanilla os package
In the presentation layer, when showing branches, we'll show worktrees against branches if they're associated. But there was a race condition: if the worktree model was refreshed after the branches model, it wouldn't be used in the presentation layer when it came time to render the branches. A better solution would be to have some way of signalling that a particular context needs to be refreshed and after all the models are done being refreshed, we then refresh the contexts. This will prevent double-renders
3557bc4
to
2d4706e
Compare
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [GoogleContainerTools/skaffold](https://github.com/GoogleContainerTools/skaffold) | patch | `v2.6.2` -> `v2.6.3` | | [ajeetdsouza/zoxide](https://github.com/ajeetdsouza/zoxide) | patch | `v0.9.1` -> `v0.9.2` | | [aquaproj/aqua-registry](https://github.com/aquaproj/aqua-registry) | patch | `v4.32.0` -> `v4.32.2` | | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.39.4` -> `v0.40.0` | | [weaveworks/eksctl](https://github.com/weaveworks/eksctl) | minor | `v0.150.0` -> `v0.151.0` | --- ### Release Notes <details> <summary>GoogleContainerTools/skaffold (GoogleContainerTools/skaffold)</summary> ### [`v2.6.3`](https://github.com/GoogleContainerTools/skaffold/releases/tag/v2.6.3): Release [Compare Source](https://github.com/GoogleContainerTools/skaffold/compare/v2.6.2...v2.6.3) ##### v2.6.3 Release - 2023-08-04 **Linux amd64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-linux-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **Linux arm64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-linux-arm64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **macOS amd64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-darwin-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **macOS arm64** `curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-darwin-arm64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin` **Windows** https://storage.googleapis.com/skaffold/releases/v2.6.3/skaffold-windows-amd64.exe **Docker image** `gcr.io/k8s-skaffold/skaffold:v2.6.3` **Full Changelog**: GoogleContainerTools/skaffold@v2.6.2...v2.6.3 </details> <details> <summary>ajeetdsouza/zoxide (ajeetdsouza/zoxide)</summary> ### [`v0.9.2`](https://github.com/ajeetdsouza/zoxide/releases/tag/v0.9.2): 0.9.2 [Compare Source](https://github.com/ajeetdsouza/zoxide/compare/v0.9.1...v0.9.2) ##### Added - Short option `-a` for `zoxide query --all`. ##### Fixed - PowerShell: use `global` scope for variables / functions. </details> <details> <summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary> ### [`v4.32.2`](https://github.com/aquaproj/aqua-registry/releases/tag/v4.32.2) [Compare Source](https://github.com/aquaproj/aqua-registry/compare/v4.32.1...v4.32.2) [Issues](https://github.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.32.2) | [Pull Requests](https://github.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.32.2) | aquaproj/aqua-registry@v4.32.1...v4.32.2 ##### Fixes [#​14327](https://github.com/aquaproj/aqua-registry/issues/14327) Rename kyleconroy/sqlc to sqlc-dev/sqlc as of repository migration [@​ichizero](https://github.com/ichizero) [#​14339](https://github.com/aquaproj/aqua-registry/issues/14339) sqlc-dev/sqlc: Support old versions ### [`v4.32.1`](https://github.com/aquaproj/aqua-registry/releases/tag/v4.32.1) [Compare Source](https://github.com/aquaproj/aqua-registry/compare/v4.32.0...v4.32.1) [Issues](https://github.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.32.1) | [Pull Requests](https://github.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.32.1) | aquaproj/aqua-registry@v4.32.0...v4.32.1 #### Fixes [#​14275](https://github.com/aquaproj/aqua-registry/issues/14275) [#​14276](https://github.com/aquaproj/aqua-registry/issues/14276) [#​14277](https://github.com/aquaproj/aqua-registry/issues/14277) [#​14278](https://github.com/aquaproj/aqua-registry/issues/14278) [domoritz/arrow-tools/{csv2arrow,csv2parquet,json2arrow,json2parquet}](https://github.com/domoritz/arrow-tools): Follow up changes of asset names </details> <details> <summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary> ### [`v0.40.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.40.0) [Compare Source](https://github.com/jesseduffield/lazygit/compare/v0.39.4...v0.40.0) <!-- Release notes generated using configuration in .github/release.yml at v0.40.0 --> ### 🎉 LAZYGIT FIVE YEAR ANNIVERSARY EDITION 🎉 Holy moly, has it really been 5 years since Lazygit's birth? Time flies when you're having fun. I've written a post celebrating the anniversary [here](https://jesseduffield.com/Lazygit-5-Years-On). As for this release, we've got some great features here. ##### Worktrees We now have a worktrees view so you can easily create worktrees and switch to them and so on. I'm not a big worktrees user myself so please raise an issue if you can think of places to improve the UX. ![worktree_create_from_branches-compressed](https://github.com/jesseduffield/lazygit/assets/8456633/3ef0b085-e9d0-42de-af58-16cbae581d34) ##### Rebase --onto Rebasing onto a marked base commit is a very useful feature that we've been sorely lacking for a while (demo coming soon) ##### Auto-refresh on window focus Auto-refresh on window activation is a complete game-changer. No more having to manually press shift+R when you come back from your editor. ##### Nuking the worktree We also have a fun enhancement in this release: showing an explosion animation when you nuke the working tree. ![nuke-gif](https://github.com/jesseduffield/lazygit/assets/8456633/32b3f91c-fea3-474d-8997-1de2f5e4f5d4) You'll also notice in the readme we've got some updated demo gifs to showoff Lazygit's features. More of those to come. #### What's Changed ##### Features ✨ - Add worktrees view by [@​jesseduffield](https://github.com/jesseduffield) (with help from [@​kadaan](https://github.com/kadaan)) in [https://github.com/jesseduffield/lazygit/pull/2147](https://github.com/jesseduffield/lazygit/pull/2147) - Rebase onto branch from a marked base commit by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2835](https://github.com/jesseduffield/lazygit/pull/2835) - Auto-refresh on window activation by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2854](https://github.com/jesseduffield/lazygit/pull/2854) ##### Enhancements 🔥 - Faster refresh by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2841](https://github.com/jesseduffield/lazygit/pull/2841) - feat: add os.copyToClipboardCmd to allow for a custom command [#​1055](https://github.com/jesseduffield/lazygit/issues/1055) by [@​redstreet](https://github.com/redstreet) in [https://github.com/jesseduffield/lazygit/pull/2784](https://github.com/jesseduffield/lazygit/pull/2784) - Add bisect menu entry that lets you choose bisect terms by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2838](https://github.com/jesseduffield/lazygit/pull/2838) - When bisecting, always mark the current commit as good/bad, not the selected by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2837](https://github.com/jesseduffield/lazygit/pull/2837) - Visualize local branch heads in commits panel, 2nd approach by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2775](https://github.com/jesseduffield/lazygit/pull/2775) - Allow force-tagging if tag exists by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2827](https://github.com/jesseduffield/lazygit/pull/2827) - Save IgnoreWhitespaceInDiffView in state.yml by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2830](https://github.com/jesseduffield/lazygit/pull/2830) - Show loader when rebasing by [@​KarlHeitmann](https://github.com/KarlHeitmann) in [https://github.com/jesseduffield/lazygit/pull/2851](https://github.com/jesseduffield/lazygit/pull/2851) - Internationalise logging of commands by [@​KarlHeitmann](https://github.com/KarlHeitmann) in [https://github.com/jesseduffield/lazygit/pull/2852](https://github.com/jesseduffield/lazygit/pull/2852) - Show visual explosion effect when nuking worktree by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2861](https://github.com/jesseduffield/lazygit/pull/2861) ##### Fixes 🔧 - Fix issue where using `null` to un-map a keybinding was ignored by [@​hatredholder](https://github.com/hatredholder) in [https://github.com/jesseduffield/lazygit/pull/2832](https://github.com/jesseduffield/lazygit/pull/2832) - Show error when trying to open patch menu with an empty patch by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2829](https://github.com/jesseduffield/lazygit/pull/2829) - Fix merge status for update-ref command by [@​stefanhaller](https://github.com/stefanhaller) in [https://github.com/jesseduffield/lazygit/pull/2845](https://github.com/jesseduffield/lazygit/pull/2845) - Stop worktrees view from stealing the window by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2863](https://github.com/jesseduffield/lazygit/pull/2863) - Fix confirmation view sizing by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2879](https://github.com/jesseduffield/lazygit/pull/2879) ##### Maintenance ⚙️ - Standardise on using lo for slice functions by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2846](https://github.com/jesseduffield/lazygit/pull/2846) - Remove redundant secureexec package by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2847](https://github.com/jesseduffield/lazygit/pull/2847) - Add automated demo recordings by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2853](https://github.com/jesseduffield/lazygit/pull/2853) - Remove file watcher code by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2865](https://github.com/jesseduffield/lazygit/pull/2865) - Add more demos to the README by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2866](https://github.com/jesseduffield/lazygit/pull/2866) - Move features to top of readme by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2867](https://github.com/jesseduffield/lazygit/pull/2867) - Add more demos by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2874](https://github.com/jesseduffield/lazygit/pull/2874) ##### Other Changes - Create demo output dir if it doesn't already exist by [@​jesseduffield](https://github.com/jesseduffield) in [https://github.com/jesseduffield/lazygit/pull/2857](https://github.com/jesseduffield/lazygit/pull/2857) #### New Contributors - [@​hatredholder](https://github.com/hatredholder) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2832](https://github.com/jesseduffield/lazygit/pull/2832) - [@​redstreet](https://github.com/redstreet) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2784](https://github.com/jesseduffield/lazygit/pull/2784) - [@​kadaan](https://github.com/kadaan) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2147](https://github.com/jesseduffield/lazygit/pull/2147) - [@​KarlHeitmann](https://github.com/KarlHeitmann) made their first contribution in [https://github.com/jesseduffield/lazygit/pull/2851](https://github.com/jesseduffield/lazygit/pull/2851) **Full Changelog**: jesseduffield/lazygit@v0.39.4...v0.40.0 </details> <details> <summary>weaveworks/eksctl (weaveworks/eksctl)</summary> ### [`v0.151.0`](https://github.com/eksctl-io/eksctl/releases/tag/v0.151.0): eksctl 0.151.0 (permalink) [Compare Source](https://github.com/weaveworks/eksctl/compare/0.150.0...0.151.0) ### Release v0.151.0 #### 🚀 Features - Support custom AMIs for self-managed Windows nodegroups ([#​6804](https://github.com/weaveworks/eksctl/issues/6804)) - Support custom Ubuntu AMIs for EKS-managed nodegroups ([#​6850](https://github.com/weaveworks/eksctl/issues/6850)) #### 🎯 Improvements - Remove support for EKS 1.22 ([#​6704](https://github.com/weaveworks/eksctl/issues/6704)) #### 🐛 Bug Fixes - Fix error with tar in `Post Cache go-build and mod` step ([#​6840](https://github.com/weaveworks/eksctl/issues/6840)) - Fix setting link-time variables for release version ([#​6841](https://github.com/weaveworks/eksctl/issues/6841)) - Select one subnet for AZs where multiple are present and no VPC config provided ([#​6814](https://github.com/weaveworks/eksctl/issues/6814)) - Paginate instance type offerings response ([#​6832](https://github.com/weaveworks/eksctl/issues/6832)) #### 🧰 Maintenance - Bump dependencies ([#​6852](https://github.com/weaveworks/eksctl/issues/6852), [#​6859](https://github.com/weaveworks/eksctl/issues/6859)) - Cleanup Flux Integration ([#​6836](https://github.com/weaveworks/eksctl/issues/6836)) #### Acknowledgments Weaveworks would like to sincerely thank: [@​watany-dev](https://github.com/watany-dev) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 4pm on thursday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yNy4xIiwidXBkYXRlZEluVmVyIjoiMzYuMjcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
(Jesse speaking)
Adds a worktree view and operations for worktrees
If you don't use worktrees, you shouldn't notice any change other than the new worktrees tab appearing next to the files tab.
This is a first-cut. We will refine the UX as we go