mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-10-06 14:06:32 -04:00
The worktree loader associates a worktree that is mid-rebase or mid-bisect with the branch involved, even though its HEAD is detached. Fast-forwarding such a branch therefore ran the fast-forward in that worktree. This moved the detached HEAD and put the upstream commits into the rebase in progress, while the branch stayed where it was. Remember in the worktree model when its branch comes from a rebase or bisect, and refuse to fast-forward the branch in that case. Updating only the ref is no option for a rebase; the rebase writes the branch when it finishes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package models
|
|
|
|
// A git worktree
|
|
type Worktree struct {
|
|
// if false, this is a linked worktree
|
|
IsMain bool
|
|
// if true, this is the worktree that is currently checked out
|
|
IsCurrent bool
|
|
// path to the directory of the worktree i.e. the directory that contains all the user's files
|
|
Path string
|
|
// if true, the path is not found
|
|
IsPathMissing bool
|
|
// path of the git directory for this worktree. The equivalent of the .git directory
|
|
// in the main worktree. For linked worktrees this would be <repo_path>/.git/worktrees/<name>
|
|
GitDir string
|
|
// If the worktree has a branch checked out, this field will be set to the branch name.
|
|
// A branch is considered 'checked out' if:
|
|
// * the worktree is directly on the branch
|
|
// * the worktree is mid-rebase on the branch
|
|
// * the worktree is mid-bisect on the branch
|
|
Branch string
|
|
// If true, the worktree is mid-rebase or mid-bisect on Branch, so its HEAD
|
|
// is detached rather than pointing at the branch
|
|
IsRebasingOrBisecting bool
|
|
// The HEAD sha of the worktree. Always populated (even when Branch is set).
|
|
// Used for display when Branch is empty (detached HEAD state).
|
|
Head string
|
|
// based on the path, but uniquified. Not the same name that git uses in the worktrees/ folder (no good reason for this,
|
|
// I just prefer my naming convention better)
|
|
Name string
|
|
}
|
|
|
|
func (w *Worktree) RefName() string {
|
|
return w.Name
|
|
}
|
|
|
|
func (w *Worktree) ID() string {
|
|
return w.Path
|
|
}
|
|
|
|
func (w *Worktree) Description() string {
|
|
return w.RefName()
|
|
}
|