diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-03-27 19:12:15 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-03-28 11:59:45 +1100 |
commit | 198d237679bcc19655138f76a11770c3ef91ec4f (patch) | |
tree | ecc09e91f96baeaf75d437f5fbd00e007d4c6472 /pkg/commands | |
parent | 39315ca1e2f526911ea35d9848b0427093e4080a (diff) |
more centralised handling of refreshing
Diffstat (limited to 'pkg/commands')
-rw-r--r-- | pkg/commands/branch_list_builder.go | 9 | ||||
-rw-r--r-- | pkg/commands/commit.go | 16 | ||||
-rw-r--r-- | pkg/commands/commit_list_builder.go | 19 | ||||
-rw-r--r-- | pkg/commands/git.go | 18 |
4 files changed, 28 insertions, 34 deletions
diff --git a/pkg/commands/branch_list_builder.go b/pkg/commands/branch_list_builder.go index f7949d2bc..1430bbf92 100644 --- a/pkg/commands/branch_list_builder.go +++ b/pkg/commands/branch_list_builder.go @@ -2,7 +2,6 @@ package commands import ( "regexp" - "strconv" "strings" "github.com/jesseduffield/lazygit/pkg/utils" @@ -145,13 +144,7 @@ func (b *BranchListBuilder) obtainReflogBranches() []*Branch { reflogBranches := make([]*Branch, 0, len(b.ReflogCommits)) for _, commit := range b.ReflogCommits { if match := re.FindStringSubmatch(commit.Name); len(match) == 3 { - timestamp, err := strconv.Atoi(commit.Date) - if err != nil { - b.Log.Errorf("couldn't parse reflog date: %s", commit.Date) - continue - } - - recency := utils.UnixToTimeAgo(timestamp) + recency := utils.UnixToTimeAgo(commit.UnixTimestamp) for _, branchName := range match[1:] { if !foundBranchesMap[branchName] { foundBranchesMap[branchName] = true diff --git a/pkg/commands/commit.go b/pkg/commands/commit.go index a400da928..ea4192b33 100644 --- a/pkg/commands/commit.go +++ b/pkg/commands/commit.go @@ -2,14 +2,14 @@ package commands // Commit : A git commit type Commit struct { - Sha string - Name string - Status string // one of "unpushed", "pushed", "merged", "rebasing" or "selected" - Action string // one of "", "pick", "edit", "squash", "reword", "drop", "fixup" - Tags []string - ExtraInfo string // something like 'HEAD -> master, tag: v0.15.2' - Author string - Date string + Sha string + Name string + Status string // one of "unpushed", "pushed", "merged", "rebasing" or "selected" + Action string // one of "", "pick", "edit", "squash", "reword", "drop", "fixup" + Tags []string + ExtraInfo string // something like 'HEAD -> master, tag: v0.15.2' + Author string + UnixTimestamp int64 } func (c *Commit) ShortSha() string { diff --git a/pkg/commands/commit_list_builder.go b/pkg/commands/commit_list_builder.go index a39ab7593..b48c305c4 100644 --- a/pkg/commands/commit_list_builder.go +++ b/pkg/commands/commit_list_builder.go @@ -7,6 +7,7 @@ import ( "os/exec" "path/filepath" "regexp" + "strconv" "strings" "github.com/fatih/color" @@ -56,7 +57,7 @@ func (c *CommitListBuilder) extractCommitFromLine(line string) *Commit { split := strings.Split(line, SEPARATION_CHAR) sha := split[0] - date := split[1] + unixTimestamp := split[1] author := split[2] extraInfo := strings.TrimSpace(split[3]) message := strings.Join(split[4:], SEPARATION_CHAR) @@ -70,13 +71,15 @@ func (c *CommitListBuilder) extractCommitFromLine(line string) *Commit { } } + unitTimestampInt, _ := strconv.Atoi(unixTimestamp) + return &Commit{ - Sha: sha, - Name: message, - Tags: tags, - ExtraInfo: extraInfo, - Date: date, - Author: author, + Sha: sha, + Name: message, + Tags: tags, + ExtraInfo: extraInfo, + UnixTimestamp: int64(unitTimestampInt), + Author: author, } } @@ -305,5 +308,5 @@ func (c *CommitListBuilder) getLogCmd(limit bool) *exec.Cmd { limitFlag = "-300" } - return c.OSCommand.ExecutableFromString(fmt.Sprintf("git log --oneline --pretty=format:\"%%H%s%%ar%s%%aN%s%%d%s%%s\" %s --abbrev=%d", SEPARATION_CHAR, SEPARATION_CHAR, SEPARATION_CHAR, SEPARATION_CHAR, limitFlag, 20)) + return c.OSCommand.ExecutableFromString(fmt.Sprintf("git log --oneline --pretty=format:\"%%H%s%%at%s%%aN%s%%d%s%%s\" %s --abbrev=%d --date=unix ", SEPARATION_CHAR, SEPARATION_CHAR, SEPARATION_CHAR, SEPARATION_CHAR, limitFlag, 20)) } diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 42b075915..803cfe2d4 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -484,11 +484,7 @@ func (c *GitCommand) GitStatus() (string, error) { // IsInMergeState states whether we are still mid-merge func (c *GitCommand) IsInMergeState() (bool, error) { - output, err := c.OSCommand.RunCommandWithOutput("git status --untracked-files=all") - if err != nil { - return false, err - } - return strings.Contains(output, "conclude merge") || strings.Contains(output, "unmerged paths"), nil + return c.OSCommand.FileExists(fmt.Sprintf("%s/MERGE_HEAD", c.DotGitDir)) } // RebaseMode returns "" for non-rebase mode, "normal" for normal rebase @@ -1133,14 +1129,16 @@ func (c *GitCommand) GetNewReflogCommits(lastReflogCommit *Commit) ([]*Commit, e return false, nil } + unixTimestamp, _ := strconv.Atoi(match[2]) + commit := &Commit{ - Sha: match[1], - Name: match[3], - Date: match[2], - Status: "reflog", + Sha: match[1], + Name: match[3], + UnixTimestamp: int64(unixTimestamp), + Status: "reflog", } - if lastReflogCommit != nil && commit.Sha == lastReflogCommit.Sha && commit.Date == lastReflogCommit.Date { + if lastReflogCommit != nil && commit.Sha == lastReflogCommit.Sha && commit.UnixTimestamp == lastReflogCommit.UnixTimestamp { // after this point we already have these reflogs loaded so we'll simply return the new ones return true, nil } |