diff --git a/pkg/commands/git_commands/commit_loader.go b/pkg/commands/git_commands/commit_loader.go index 119566f08..8c85de402 100644 --- a/pkg/commands/git_commands/commit_loader.go +++ b/pkg/commands/git_commands/commit_loader.go @@ -89,7 +89,7 @@ func (self *CommitLoader) GetCommits(opts GetCommitsOptions) ([]*models.Commit, if commit.Sha == firstPushedCommit { passedFirstPushedCommit = true } - commit.Status = map[bool]string{true: "unpushed", false: "pushed"}[!passedFirstPushedCommit] + commit.Status = map[bool]models.CommitStatus{true: models.StatusUnpushed, false: models.StatusPushed}[!passedFirstPushedCommit] commits = append(commits, commit) return false, nil }) @@ -312,7 +312,7 @@ func (self *CommitLoader) getInteractiveRebasingCommits() ([]*models.Commit, err commits = slices.Prepend(commits, &models.Commit{ Sha: t.Commit, Name: t.Msg, - Status: "rebasing", + Status: models.StatusRebasing, Action: t.Command.String(), }) } @@ -332,7 +332,7 @@ func (self *CommitLoader) commitFromPatch(content string) *models.Commit { return &models.Commit{ Sha: sha, Name: name, - Status: "rebasing", + Status: models.StatusRebasing, } } @@ -349,11 +349,11 @@ func (self *CommitLoader) setCommitMergedStatuses(refName string, commits []*mod if strings.HasPrefix(ancestor, commit.Sha) { passedAncestor = true } - if commit.Status != "pushed" { + if commit.Status != models.StatusPushed { continue } if passedAncestor { - commits[i].Status = "merged" + commits[i].Status = models.StatusMerged } } return commits, nil diff --git a/pkg/commands/git_commands/commit_loader_test.go b/pkg/commands/git_commands/commit_loader_test.go index 8ba3e6649..dab321753 100644 --- a/pkg/commands/git_commands/commit_loader_test.go +++ b/pkg/commands/git_commands/commit_loader_test.go @@ -78,7 +78,7 @@ func TestGetCommits(t *testing.T) { { Sha: "0eea75e8c631fba6b58135697835d58ba4c18dbc", Name: "better typing for rebase mode", - Status: "unpushed", + Status: models.StatusUnpushed, Action: "", Tags: []string{}, ExtraInfo: "(HEAD -> better-tests)", @@ -92,7 +92,7 @@ func TestGetCommits(t *testing.T) { { Sha: "b21997d6b4cbdf84b149d8e6a2c4d06a8e9ec164", Name: "fix logging", - Status: "pushed", + Status: models.StatusPushed, Action: "", Tags: []string{}, ExtraInfo: "(origin/better-tests)", @@ -106,7 +106,7 @@ func TestGetCommits(t *testing.T) { { Sha: "e94e8fc5b6fab4cb755f29f1bdb3ee5e001df35c", Name: "refactor", - Status: "pushed", + Status: models.StatusPushed, Action: "", Tags: []string{}, ExtraInfo: "", @@ -120,7 +120,7 @@ func TestGetCommits(t *testing.T) { { Sha: "d8084cd558925eb7c9c38afeed5725c21653ab90", Name: "WIP", - Status: "pushed", + Status: models.StatusPushed, Action: "", Tags: []string{}, ExtraInfo: "", @@ -134,7 +134,7 @@ func TestGetCommits(t *testing.T) { { Sha: "65f910ebd85283b5cce9bf67d03d3f1a9ea3813a", Name: "WIP", - Status: "pushed", + Status: models.StatusPushed, Action: "", Tags: []string{}, ExtraInfo: "", @@ -148,7 +148,7 @@ func TestGetCommits(t *testing.T) { { Sha: "26c07b1ab33860a1a7591a0638f9925ccf497ffa", Name: "WIP", - Status: "merged", + Status: models.StatusMerged, Action: "", Tags: []string{}, ExtraInfo: "", @@ -162,7 +162,7 @@ func TestGetCommits(t *testing.T) { { Sha: "3d4470a6c072208722e5ae9a54bcb9634959a1c5", Name: "WIP", - Status: "merged", + Status: models.StatusMerged, Action: "", Tags: []string{}, ExtraInfo: "", @@ -176,7 +176,7 @@ func TestGetCommits(t *testing.T) { { Sha: "053a66a7be3da43aacdc7aa78e1fe757b82c4dd2", Name: "refactoring the config struct", - Status: "merged", + Status: models.StatusMerged, Action: "", Tags: []string{}, ExtraInfo: "", diff --git a/pkg/commands/git_commands/reflog_commit_loader.go b/pkg/commands/git_commands/reflog_commit_loader.go index e2d3a7dad..c5c14fb72 100644 --- a/pkg/commands/git_commands/reflog_commit_loader.go +++ b/pkg/commands/git_commands/reflog_commit_loader.go @@ -52,7 +52,7 @@ func (self *ReflogCommitLoader) GetReflogCommits(lastReflogCommit *models.Commit Sha: fields[0], Name: fields[2], UnixTimestamp: int64(unixTimestamp), - Status: "reflog", + Status: models.StatusReflog, Parents: parents, } diff --git a/pkg/commands/git_commands/reflog_commit_loader_test.go b/pkg/commands/git_commands/reflog_commit_loader_test.go index 7170196e9..a51a40e69 100644 --- a/pkg/commands/git_commands/reflog_commit_loader_test.go +++ b/pkg/commands/git_commands/reflog_commit_loader_test.go @@ -51,35 +51,35 @@ func TestGetReflogCommits(t *testing.T) { { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from A to B", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from B to A", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from A to B", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from master to A", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, { Sha: "f4ddf2f0d4be4ccc7efa", Name: "checkout: moving from A to master", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643149435, Parents: []string{"51baa8c1"}, }, @@ -95,7 +95,7 @@ func TestGetReflogCommits(t *testing.T) { lastReflogCommit: &models.Commit{ Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from B to A", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, @@ -103,7 +103,7 @@ func TestGetReflogCommits(t *testing.T) { { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from A to B", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, @@ -119,7 +119,7 @@ func TestGetReflogCommits(t *testing.T) { lastReflogCommit: &models.Commit{ Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from B to A", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, @@ -128,7 +128,7 @@ func TestGetReflogCommits(t *testing.T) { { Sha: "c3c4b66b64c97ffeecde", Name: "checkout: moving from A to B", - Status: "reflog", + Status: models.StatusReflog, UnixTimestamp: 1643150483, Parents: []string{"51baa8c1"}, }, diff --git a/pkg/commands/models/commit.go b/pkg/commands/models/commit.go index b3a171934..adc7a5a51 100644 --- a/pkg/commands/models/commit.go +++ b/pkg/commands/models/commit.go @@ -9,11 +9,23 @@ import ( // Special commit hash for empty tree object const EmptyTreeCommitHash = "4b825dc642cb6eb9a060e54bf8d69288fbee4904" +type CommitStatus int + +const ( + StatusNone CommitStatus = iota + StatusUnpushed + StatusPushed + StatusMerged + StatusRebasing + StatusSelected + StatusReflog +) + // Commit : A git commit type Commit struct { Sha string Name string - Status string // one of "unpushed", "pushed", "merged", "rebasing" or "selected" + Status CommitStatus Action string // one of "", "pick", "edit", "squash", "reword", "drop", "fixup" Tags []string ExtraInfo string // something like 'HEAD -> master, tag: v0.15.2' diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index 77b946a64..f7d3e1308 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -346,16 +346,17 @@ func getShaColor( diffed := commit.Sha == diffName shaColor := theme.DefaultTextColor switch commit.Status { - case "unpushed": + case models.StatusUnpushed: shaColor = style.FgRed - case "pushed": + case models.StatusPushed: shaColor = style.FgYellow - case "merged": + case models.StatusMerged: shaColor = style.FgGreen - case "rebasing": + case models.StatusRebasing: shaColor = style.FgBlue - case "reflog": + case models.StatusReflog: shaColor = style.FgBlue + default: } if diffed {