Leave working dir alone when unable to check out branch checked out in worktree#2803
Open
rodovich wants to merge 1 commit into
Open
Leave working dir alone when unable to check out branch checked out in worktree#2803rodovich wants to merge 1 commit into
rodovich wants to merge 1 commit into
Conversation
…n worktree Previously, `checkoutLocalBranch:` wrote the target tree to the working directory and index before moving HEAD. When the branch is checked out in a linked worktree, `git_repository_set_head()` fails, leaving the applied tree changes behind as staged debris (issue git-up#2713).
Collaborator
|
Thanks for the contribution. With worktrees rising in popularity thanks to AI tooling, I'm sure we have much to do to catch up. I'm out this week but I'll working through my backlog of PRs next week. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #2713.
Previously,
checkoutLocalBranch:wrote the target tree to the working directory and index before moving HEAD. When the branch is checked out in a linked worktree,git_repository_set_head()fails, leaving the applied tree changes behind as staged debris.Testing
Added a test that checks out a branch in a worktree and then calls
checkoutLocalBranch:and validates that the working directory is unchanged. Also tested manually.GitUp 1.5.0 (1058): checking out the branch fails but leaves modified files in the index:
Built from this branch: checking out fails (with a slightly clearer message) and does not touch the index:
I AGREE TO THE GITUP CONTRIBUTOR LICENSE AGREEMENT.