Jesse Duffield
4c5b1574f1
Centralise logic for obtaining repo paths
...
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.
2023-07-30 18:35:24 +10:00
Jesse Duffield
de57cfd6ff
Remove IO logic from presentation code for worktrees
...
We're doing all the IO in our workers loader method so that we don't need to do any
in our presentation code
2023-07-30 18:35:24 +10:00
Jesse Duffield
2b24c15938
Add test for opening lazygit in the worktree of a bare repo
2023-07-30 18:35:23 +10:00
Jesse Duffield
e874f94cf8
Remove dead function
2023-07-30 18:35:23 +10:00
Jesse Duffield
0a410141ae
Fix test by making branches appear deterministically
...
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
2023-07-30 18:35:23 +10:00
Jesse Duffield
e356b29b4a
Allow entering a submodule by pressing space
2023-07-30 18:35:23 +10:00
Jesse Duffield
bc4ce26cef
Allow entering a worktree by pressing enter
2023-07-30 18:35:23 +10:00
Jesse Duffield
ae66f720f5
Update repo switch logic
...
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
2023-07-30 18:35:23 +10:00
Jesse Duffield
9c15ba0c0b
Add test for retained context focus when switching worktrees
2023-07-30 18:35:23 +10:00
Jesse Duffield
b3060065d9
Support fastforwarding worktree
2023-07-30 18:35:23 +10:00
Jesse Duffield
a313b16704
Add more worktree tests
2023-07-30 18:35:23 +10:00
Jesse Duffield
b93b9dae88
Add worktree tests for removing/detaching
2023-07-30 18:35:23 +10:00
Jesse Duffield
277142fc4b
Add worktree integration tests
2023-07-30 18:35:23 +10:00
Jesse Duffield
18a508b29c
Update cheatsheets
2023-07-30 18:35:23 +10:00
Jesse Duffield
cdfad864ae
Remove worktree version guards
...
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
2023-07-30 18:35:23 +10:00
Jesse Duffield
fb4453c18a
Fix unit tests
2023-07-30 18:35:23 +10:00
Jesse Duffield
b5ff55e538
Show loader when switching worktrees
2023-07-30 18:35:23 +10:00
Jesse Duffield
81a9133261
Support older versions of git when fetching worktrees
...
Older versions of git don't support the -z flag in `git worktree list`.
So we're using newlines.
Also, we're not raising an error upon error because that triggers another refresh,
which gets us into an infinite loop
2023-07-30 18:35:23 +10:00
Jesse Duffield
ca6f9c4155
Fix tests
...
Going and fixing up some submodule tests which were broken by bad assumptions with worktree code
2023-07-30 18:35:23 +10:00
Jesse Duffield
7569180cac
Fix tests
...
We now change directories to the repo on startup so we don't need to determine the test path in some special way
2023-07-30 18:35:23 +10:00
Jesse Duffield
eeec373728
Safer fetching of linked worktree paths
2023-07-30 18:35:23 +10:00
Jesse Duffield
0604e43813
Move worktrees tab to files window
2023-07-30 18:35:23 +10:00
Jesse Duffield
27ade502ee
Change directory to worktree if given as an argument
...
Previously we used an env var for this and it's not clear to me how that worked but
with this PR current directory = worktree directory
2023-07-30 18:35:23 +10:00
Jesse Duffield
3a7468ecac
Support opening worktree in editor
2023-07-30 18:35:23 +10:00
Jesse Duffield
7b05dacb98
Properly render worktrees in files panel
2023-07-30 18:35:22 +10:00
Jesse Duffield
b73efb2c22
Better logic for knowing which repo we're in
2023-07-30 18:35:22 +10:00
Jesse Duffield
a06a5cadee
Only show worktree in status panel if not the main worktree and worktrees are supported
2023-07-30 18:35:22 +10:00
Jesse Duffield
3cd2d6fa5c
Hide worktree functionality on old git versions
2023-07-30 18:35:22 +10:00
Jesse Duffield
ec839e9e96
Associate branches with worktrees even when mid-rebase
2023-07-30 18:35:22 +10:00
Jesse Duffield
6f2f9f6677
Assume that the base of a worktree can be checked out
2023-07-30 18:35:22 +10:00
Jesse Duffield
2082fdf84a
i18n for worktrees
2023-07-30 18:35:22 +10:00
Jesse Duffield
894485190b
Don't quit on error
2023-07-30 18:35:22 +10:00
Jesse Duffield
87b2455dbb
Allow opening worktree in editor
...
This does the job but I think we need yet another editor command for opening a directory in a new window.
2023-07-30 18:35:22 +10:00
Jesse Duffield
2e68967e02
Show base ref suggestions when creating worktree
2023-07-30 18:35:22 +10:00
Jesse Duffield
71422a8549
Refresh work trees when discarding file changes
...
We do this because we may be deleting a worktree folder so we'll need to show that in the worktrees view
2023-07-30 18:35:22 +10:00
Jesse Duffield
9c69a5df69
Checkout worktree when creating from worktree view
2023-07-30 18:35:22 +10:00
Jesse Duffield
9b24995990
Use 'M' for months in branches panel
2023-07-30 18:35:22 +10:00
Jesse Duffield
142f06357f
Fix filtering logic in worktrees view
2023-07-30 18:35:22 +10:00
Jesse Duffield
18ea68c23a
Support creating worktrees from refs
2023-07-30 18:35:22 +10:00
Jesse Duffield
4b2622d93b
Fix wording
2023-07-30 18:35:22 +10:00
Jesse Duffield
ae0193698e
Log when directory is changed
2023-07-30 18:35:22 +10:00
Jesse Duffield
6b4a638415
Handle deleting branch attached to worktree
2023-07-30 18:35:22 +10:00
Jesse Duffield
4b3c9f5b35
Update wording
2023-07-30 18:35:22 +10:00
Jesse Duffield
6c69549ced
Don't touch repo stack when switching worktrees
...
We shouldn't touch this cos we're doing a lateral move
2023-07-30 18:35:22 +10:00
Jesse Duffield
5868750aba
Move status panel presentation logic into presentation package
2023-07-30 18:35:22 +10:00
Jesse Duffield
ab3052f642
Land in the same panel when switching to a worktree
2023-07-30 18:35:22 +10:00
Jesse Duffield
53f4ccb809
Move current worktree to top of list
2023-07-30 18:35:22 +10:00
Jesse Duffield
077ae99438
Prompt to switch to worktree when branch is checked out by other worktree
2023-07-30 18:35:22 +10:00
Jesse Duffield
fe8adf9eb8
Use git lingo
2023-07-30 18:35:22 +10:00
Jesse Duffield
c713d550c0
Improve name handling
2023-07-30 18:35:22 +10:00