mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-15 11:56:37 +02:00
Merge branch 'master' into https-ask-for-username-password
This commit is contained in:
commit
b0eaf507a5
@ -208,11 +208,6 @@ func includesInt(list []int, a int) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBranchName branch name
|
|
||||||
func (c *GitCommand) GetBranchName() (string, error) {
|
|
||||||
return c.OSCommand.RunCommandWithOutput("git symbolic-ref --short HEAD")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetHard does the equivalent of `git reset --hard HEAD`
|
// ResetHard does the equivalent of `git reset --hard HEAD`
|
||||||
func (c *GitCommand) ResetHard() error {
|
func (c *GitCommand) ResetHard() error {
|
||||||
return c.Worktree.Reset(&gogit.ResetOptions{Mode: gogit.HardReset})
|
return c.Worktree.Reset(&gogit.ResetOptions{Mode: gogit.HardReset})
|
||||||
@ -268,11 +263,14 @@ func (c *GitCommand) NewBranch(name string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *GitCommand) CurrentBranchName() (string, error) {
|
func (c *GitCommand) CurrentBranchName() (string, error) {
|
||||||
output, err := c.OSCommand.RunCommandWithOutput("git symbolic-ref --short HEAD")
|
branchName, err := c.OSCommand.RunCommandWithOutput("git symbolic-ref --short HEAD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
branchName, err = c.OSCommand.RunCommandWithOutput("git rev-parse --short HEAD")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return utils.TrimTrailingNewline(output), nil
|
return utils.TrimTrailingNewline(branchName), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteBranch delete branch
|
// DeleteBranch delete branch
|
||||||
|
@ -1661,6 +1661,10 @@ func TestGitCommandGetCommits(t *testing.T) {
|
|||||||
assert.EqualValues(t, []string{"symbolic-ref", "--short", "HEAD"}, args)
|
assert.EqualValues(t, []string{"symbolic-ref", "--short", "HEAD"}, args)
|
||||||
// here's where we are returning the error
|
// here's where we are returning the error
|
||||||
return exec.Command("test")
|
return exec.Command("test")
|
||||||
|
case "rev-parse":
|
||||||
|
assert.EqualValues(t, []string{"rev-parse", "--short", "HEAD"}, args)
|
||||||
|
// here too
|
||||||
|
return exec.Command("test")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -1886,7 +1890,6 @@ func TestGitCommandCurrentBranchName(t *testing.T) {
|
|||||||
"says we are on the master branch if we are",
|
"says we are on the master branch if we are",
|
||||||
func(cmd string, args ...string) *exec.Cmd {
|
func(cmd string, args ...string) *exec.Cmd {
|
||||||
assert.Equal(t, "git", cmd)
|
assert.Equal(t, "git", cmd)
|
||||||
assert.EqualValues(t, []string{"symbolic-ref", "--short", "HEAD"}, args)
|
|
||||||
return exec.Command("echo", "master")
|
return exec.Command("echo", "master")
|
||||||
},
|
},
|
||||||
func(output string, err error) {
|
func(output string, err error) {
|
||||||
@ -1894,11 +1897,31 @@ func TestGitCommandCurrentBranchName(t *testing.T) {
|
|||||||
assert.EqualValues(t, "master", output)
|
assert.EqualValues(t, "master", output)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"falls back to git rev-parse if symbolic-ref fails",
|
||||||
|
func(cmd string, args ...string) *exec.Cmd {
|
||||||
|
assert.EqualValues(t, "git", cmd)
|
||||||
|
|
||||||
|
switch args[0] {
|
||||||
|
case "symbolic-ref":
|
||||||
|
assert.EqualValues(t, []string{"symbolic-ref", "--short", "HEAD"}, args)
|
||||||
|
return exec.Command("test")
|
||||||
|
case "rev-parse":
|
||||||
|
assert.EqualValues(t, []string{"rev-parse", "--short", "HEAD"}, args)
|
||||||
|
return exec.Command("echo", "master")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(output string, err error) {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "master", output)
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"bubbles up error if there is one",
|
"bubbles up error if there is one",
|
||||||
func(cmd string, args ...string) *exec.Cmd {
|
func(cmd string, args ...string) *exec.Cmd {
|
||||||
assert.Equal(t, "git", cmd)
|
assert.Equal(t, "git", cmd)
|
||||||
assert.EqualValues(t, []string{"symbolic-ref", "--short", "HEAD"}, args)
|
|
||||||
return exec.Command("test")
|
return exec.Command("test")
|
||||||
},
|
},
|
||||||
func(output string, err error) {
|
func(output string, err error) {
|
||||||
|
@ -35,16 +35,12 @@ func NewBranchListBuilder(log *logrus.Entry, gitCommand *commands.GitCommand) (*
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *BranchListBuilder) obtainCurrentBranch() *commands.Branch {
|
func (b *BranchListBuilder) obtainCurrentBranch() *commands.Branch {
|
||||||
// I used go-git for this, but that breaks if you've just done a git init,
|
branchName, err := b.GitCommand.CurrentBranchName()
|
||||||
// even though you're on 'master'
|
|
||||||
branchName, err := b.GitCommand.OSCommand.RunCommandWithOutput("git symbolic-ref --short HEAD")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
branchName, err = b.GitCommand.OSCommand.RunCommandWithOutput("git rev-parse --short HEAD")
|
panic(err.Error())
|
||||||
if err != nil {
|
|
||||||
panic(err.Error())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return &commands.Branch{Name: strings.TrimSpace(branchName), Recency: " *"}
|
|
||||||
|
return &commands.Branch{Name: strings.TrimSpace(branchName)}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BranchListBuilder) obtainReflogBranches() []*commands.Branch {
|
func (b *BranchListBuilder) obtainReflogBranches() []*commands.Branch {
|
||||||
@ -61,7 +57,7 @@ func (b *BranchListBuilder) obtainReflogBranches() []*commands.Branch {
|
|||||||
branch := &commands.Branch{Name: branchName, Recency: timeNumber + timeUnit}
|
branch := &commands.Branch{Name: branchName, Recency: timeNumber + timeUnit}
|
||||||
branches = append(branches, branch)
|
branches = append(branches, branch)
|
||||||
}
|
}
|
||||||
return branches
|
return uniqueByName(branches)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BranchListBuilder) obtainSafeBranches() []*commands.Branch {
|
func (b *BranchListBuilder) obtainSafeBranches() []*commands.Branch {
|
||||||
@ -103,11 +99,8 @@ func (b *BranchListBuilder) Build() []*commands.Branch {
|
|||||||
branches := make([]*commands.Branch, 0)
|
branches := make([]*commands.Branch, 0)
|
||||||
head := b.obtainCurrentBranch()
|
head := b.obtainCurrentBranch()
|
||||||
safeBranches := b.obtainSafeBranches()
|
safeBranches := b.obtainSafeBranches()
|
||||||
if len(safeBranches) == 0 {
|
|
||||||
return append(branches, head)
|
|
||||||
}
|
|
||||||
reflogBranches := b.obtainReflogBranches()
|
reflogBranches := b.obtainReflogBranches()
|
||||||
reflogBranches = uniqueByName(append([]*commands.Branch{head}, reflogBranches...))
|
|
||||||
for i, reflogBranch := range reflogBranches {
|
for i, reflogBranch := range reflogBranches {
|
||||||
reflogBranches[i].Name = sanitisedReflogName(reflogBranch, safeBranches)
|
reflogBranches[i].Name = sanitisedReflogName(reflogBranch, safeBranches)
|
||||||
}
|
}
|
||||||
@ -115,6 +108,12 @@ func (b *BranchListBuilder) Build() []*commands.Branch {
|
|||||||
branches = b.appendNewBranches(branches, reflogBranches, safeBranches, true)
|
branches = b.appendNewBranches(branches, reflogBranches, safeBranches, true)
|
||||||
branches = b.appendNewBranches(branches, safeBranches, branches, false)
|
branches = b.appendNewBranches(branches, safeBranches, branches, false)
|
||||||
|
|
||||||
|
if len(branches) == 0 || branches[0].Name != head.Name {
|
||||||
|
branches = append([]*commands.Branch{head}, branches...)
|
||||||
|
}
|
||||||
|
|
||||||
|
branches[0].Recency = " *"
|
||||||
|
|
||||||
return branches
|
return branches
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user