diff options
Diffstat (limited to 'pkg/commands')
-rw-r--r-- | pkg/commands/branch_list_builder.go | 4 | ||||
-rw-r--r-- | pkg/commands/commit.go | 37 | ||||
-rw-r--r-- | pkg/commands/commit_list_builder.go | 35 | ||||
-rw-r--r-- | pkg/commands/git.go | 20 | ||||
-rw-r--r-- | pkg/commands/git_test.go | 8 | ||||
-rw-r--r-- | pkg/commands/patch_rebases.go | 9 |
6 files changed, 39 insertions, 74 deletions
diff --git a/pkg/commands/branch_list_builder.go b/pkg/commands/branch_list_builder.go index 99a27929a..99c60d9c9 100644 --- a/pkg/commands/branch_list_builder.go +++ b/pkg/commands/branch_list_builder.go @@ -24,11 +24,11 @@ import ( type BranchListBuilder struct { Log *logrus.Entry GitCommand *GitCommand - ReflogCommits []*Commit + ReflogCommits []*models.Commit } // NewBranchListBuilder builds a new branch list builder -func NewBranchListBuilder(log *logrus.Entry, gitCommand *GitCommand, reflogCommits []*Commit) (*BranchListBuilder, error) { +func NewBranchListBuilder(log *logrus.Entry, gitCommand *GitCommand, reflogCommits []*models.Commit) (*BranchListBuilder, error) { return &BranchListBuilder{ Log: log, GitCommand: gitCommand, diff --git a/pkg/commands/commit.go b/pkg/commands/commit.go deleted file mode 100644 index 56e37a967..000000000 --- a/pkg/commands/commit.go +++ /dev/null @@ -1,37 +0,0 @@ -package commands - -import "fmt" - -// 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 - UnixTimestamp int64 - - // IsMerge tells us whether we're dealing with a merge commit i.e. a commit with two parents - IsMerge bool -} - -func (c *Commit) ShortSha() string { - if len(c.Sha) < 8 { - return c.Sha - } - return c.Sha[:8] -} - -func (c *Commit) RefName() string { - return c.Sha -} - -func (c *Commit) ID() string { - return c.RefName() -} - -func (c *Commit) Description() string { - return fmt.Sprintf("%s %s", c.Sha[:7], c.Name) -} diff --git a/pkg/commands/commit_list_builder.go b/pkg/commands/commit_list_builder.go index 8ba457d30..32b3de0d8 100644 --- a/pkg/commands/commit_list_builder.go +++ b/pkg/commands/commit_list_builder.go @@ -12,6 +12,7 @@ import ( "github.com/fatih/color" "github.com/jesseduffield/lazygit/pkg/i18n" + "github.com/jesseduffield/lazygit/pkg/models" "github.com/sirupsen/logrus" ) @@ -48,7 +49,7 @@ func NewCommitListBuilder(log *logrus.Entry, gitCommand *GitCommand, osCommand * // then puts them into a commit object // example input: // 8ad01fe32fcc20f07bc6693f87aa4977c327f1e1|10 hours ago|Jesse Duffield| (HEAD -> master, tag: v0.15.2)|refresh commits when adding a tag -func (c *CommitListBuilder) extractCommitFromLine(line string) *Commit { +func (c *CommitListBuilder) extractCommitFromLine(line string) *models.Commit { split := strings.Split(line, SEPARATION_CHAR) sha := split[0] @@ -74,7 +75,7 @@ func (c *CommitListBuilder) extractCommitFromLine(line string) *Commit { // If there's a space then it means there must be more than one parent hash isMerge := strings.Contains(parentHashes, " ") - return &Commit{ + return &models.Commit{ Sha: sha, Name: message, Tags: tags, @@ -92,9 +93,9 @@ type GetCommitsOptions struct { RefName string // e.g. "HEAD" or "my_branch" } -func (c *CommitListBuilder) MergeRebasingCommits(commits []*Commit) ([]*Commit, error) { +func (c *CommitListBuilder) MergeRebasingCommits(commits []*models.Commit) ([]*models.Commit, error) { // chances are we have as many commits as last time so we'll set the capacity to be the old length - result := make([]*Commit, 0, len(commits)) + result := make([]*models.Commit, 0, len(commits)) for i, commit := range commits { if commit.Status != "rebasing" { // removing the existing rebase commits so we can add the refreshed ones result = append(result, commits[i:]...) @@ -124,9 +125,9 @@ func (c *CommitListBuilder) MergeRebasingCommits(commits []*Commit) ([]*Commit, } // GetCommits obtains the commits of the current branch -func (c *CommitListBuilder) GetCommits(opts GetCommitsOptions) ([]*Commit, error) { - commits := []*Commit{} - var rebasingCommits []*Commit +func (c *CommitListBuilder) GetCommits(opts GetCommitsOptions) ([]*models.Commit, error) { + commits := []*models.Commit{} + var rebasingCommits []*models.Commit rebaseMode, err := c.GitCommand.RebaseMode() if err != nil { return nil, err @@ -181,7 +182,7 @@ func (c *CommitListBuilder) GetCommits(opts GetCommitsOptions) ([]*Commit, error } // getRebasingCommits obtains the commits that we're in the process of rebasing -func (c *CommitListBuilder) getRebasingCommits(rebaseMode string) ([]*Commit, error) { +func (c *CommitListBuilder) getRebasingCommits(rebaseMode string) ([]*models.Commit, error) { switch rebaseMode { case "normal": return c.getNormalRebasingCommits() @@ -192,7 +193,7 @@ func (c *CommitListBuilder) getRebasingCommits(rebaseMode string) ([]*Commit, er } } -func (c *CommitListBuilder) getNormalRebasingCommits() ([]*Commit, error) { +func (c *CommitListBuilder) getNormalRebasingCommits() ([]*models.Commit, error) { rewrittenCount := 0 bytesContent, err := ioutil.ReadFile(filepath.Join(c.GitCommand.DotGitDir, "rebase-apply/rewritten")) if err == nil { @@ -201,7 +202,7 @@ func (c *CommitListBuilder) getNormalRebasingCommits() ([]*Commit, error) { } // we know we're rebasing, so lets get all the files whose names have numbers - commits := []*Commit{} + commits := []*models.Commit{} err = filepath.Walk(filepath.Join(c.GitCommand.DotGitDir, "rebase-apply"), func(path string, f os.FileInfo, err error) error { if rewrittenCount > 0 { rewrittenCount-- @@ -223,7 +224,7 @@ func (c *CommitListBuilder) getNormalRebasingCommits() ([]*Commit, error) { if err != nil { return err } - commits = append([]*Commit{commit}, commits...) + commits = append([]*models.Commit{commit}, commits...) return nil }) if err != nil { @@ -245,7 +246,7 @@ func (c *CommitListBuilder) getNormalRebasingCommits() ([]*Commit, error) { // getInteractiveRebasingCommits takes our git-rebase-todo and our git-rebase-todo.backup files // and extracts out the sha and names of commits that we still have to go // in the rebase: -func (c *CommitListBuilder) getInteractiveRebasingCommits() ([]*Commit, error) { +func (c *CommitListBuilder) getInteractiveRebasingCommits() ([]*models.Commit, error) { bytesContent, err := ioutil.ReadFile(filepath.Join(c.GitCommand.DotGitDir, "rebase-merge/git-rebase-todo")) if err != nil { c.Log.Error(fmt.Sprintf("error occurred reading git-rebase-todo: %s", err.Error())) @@ -253,7 +254,7 @@ func (c *CommitListBuilder) getInteractiveRebasingCommits() ([]*Commit, error) { return nil, nil } - commits := []*Commit{} + commits := []*models.Commit{} lines := strings.Split(string(bytesContent), "\n") for _, line := range lines { if line == "" || line == "noop" { @@ -263,7 +264,7 @@ func (c *CommitListBuilder) getInteractiveRebasingCommits() ([]*Commit, error) { continue } splitLine := strings.Split(line, " ") - commits = append([]*Commit{{ + commits = append([]*models.Commit{{ Sha: splitLine[1], Name: strings.Join(splitLine[2:], " "), Status: "rebasing", @@ -279,18 +280,18 @@ func (c *CommitListBuilder) getInteractiveRebasingCommits() ([]*Commit, error) { // From: Lazygit Tester <test@example.com> // Date: Wed, 5 Dec 2018 21:03:23 +1100 // Subject: second commit on master -func (c *CommitListBuilder) commitFromPatch(content string) (*Commit, error) { +func (c *CommitListBuilder) commitFromPatch(content string) (*models.Commit, error) { lines := strings.Split(content, "\n") sha := strings.Split(lines[0], " ")[1] name := strings.TrimPrefix(lines[3], "Subject: ") - return &Commit{ + return &models.Commit{ Sha: sha, Name: name, Status: "rebasing", }, nil } -func (c *CommitListBuilder) setCommitMergedStatuses(refName string, commits []*Commit) ([]*Commit, error) { +func (c *CommitListBuilder) setCommitMergedStatuses(refName string, commits []*models.Commit) ([]*models.Commit, error) { ancestor, err := c.getMergeBase(refName) if err != nil { return nil, err diff --git a/pkg/commands/git.go b/pkg/commands/git.go index dcd77f526..d39750951 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -913,7 +913,7 @@ func (c *GitCommand) GenericMerge(commandType string, command string) error { return nil } -func (c *GitCommand) RewordCommit(commits []*Commit, index int) (*exec.Cmd, error) { +func (c *GitCommand) RewordCommit(commits []*models.Commit, index int) (*exec.Cmd, error) { todo, sha, err := c.GenerateGenericRebaseTodo(commits, index, "reword") if err != nil { return nil, err @@ -922,7 +922,7 @@ func (c *GitCommand) RewordCommit(commits []*Commit, index int) (*exec.Cmd, erro return c.PrepareInteractiveRebaseCommand(sha, todo, false) } -func (c *GitCommand) MoveCommitDown(commits []*Commit, index int) error { +func (c *GitCommand) MoveCommitDown(commits []*models.Commit, index int) error { // we must ensure that we have at least two commits after the selected one if len(commits) <= index+2 { // assuming they aren't picking the bottom commit @@ -943,7 +943,7 @@ func (c *GitCommand) MoveCommitDown(commits []*Commit, index int) error { return c.OSCommand.RunPreparedCommand(cmd) } -func (c *GitCommand) InteractiveRebase(commits []*Commit, index int, action string) error { +func (c *GitCommand) InteractiveRebase(commits []*models.Commit, index int, action string) error { todo, sha, err := c.GenerateGenericRebaseTodo(commits, index, action) if err != nil { return err @@ -1005,7 +1005,7 @@ func (c *GitCommand) SoftReset(baseSha string) error { return c.OSCommand.RunCommand("git reset --soft " + baseSha) } -func (c *GitCommand) GenerateGenericRebaseTodo(commits []*Commit, actionIndex int, action string) (string, string, error) { +func (c *GitCommand) GenerateGenericRebaseTodo(commits []*models.Commit, actionIndex int, action string) (string, string, error) { baseIndex := actionIndex + 1 if len(commits) <= baseIndex { @@ -1105,7 +1105,7 @@ func (c *GitCommand) Revert(sha string) error { } // CherryPickCommits begins an interactive rebase with the given shas being cherry picked onto HEAD -func (c *GitCommand) CherryPickCommits(commits []*Commit) error { +func (c *GitCommand) CherryPickCommits(commits []*models.Commit) error { todo := "" for _, commit := range commits { todo = "pick " + commit.Sha + " " + commit.Name + "\n" + todo @@ -1188,7 +1188,7 @@ func (c *GitCommand) CheckoutFile(commitSha, fileName string) error { } // DiscardOldFileChanges discards changes to a file from an old commit -func (c *GitCommand) DiscardOldFileChanges(commits []*Commit, commitIndex int, fileName string) error { +func (c *GitCommand) DiscardOldFileChanges(commits []*models.Commit, commitIndex int, fileName string) error { if err := c.BeginInteractiveRebaseForCommit(commits, commitIndex); err != nil { return err } @@ -1299,7 +1299,7 @@ func (c *GitCommand) StashSaveStagedChanges(message string) error { // BeginInteractiveRebaseForCommit starts an interactive rebase to edit the current // commit and pick all others. After this you'll want to call `c.GenericMerge("rebase", "continue")` -func (c *GitCommand) BeginInteractiveRebaseForCommit(commits []*Commit, commitIndex int) error { +func (c *GitCommand) BeginInteractiveRebaseForCommit(commits []*models.Commit, commitIndex int) error { if len(commits)-1 < commitIndex { return errors.New("index outside of range of commits") } @@ -1380,8 +1380,8 @@ func (c *GitCommand) FetchRemote(remoteName string) error { // GetReflogCommits only returns the new reflog commits since the given lastReflogCommit // if none is passed (i.e. it's value is nil) then we get all the reflog commits -func (c *GitCommand) GetReflogCommits(lastReflogCommit *Commit, filterPath string) ([]*Commit, bool, error) { - commits := make([]*Commit, 0) +func (c *GitCommand) GetReflogCommits(lastReflogCommit *models.Commit, filterPath string) ([]*models.Commit, bool, error) { + commits := make([]*models.Commit, 0) re := regexp.MustCompile(`(\w+).*HEAD@\{([^\}]+)\}: (.*)`) filterPathArg := "" @@ -1399,7 +1399,7 @@ func (c *GitCommand) GetReflogCommits(lastReflogCommit *Commit, filterPath strin unixTimestamp, _ := strconv.Atoi(match[2]) - commit := &Commit{ + commit := &models.Commit{ Sha: match[1], Name: match[3], UnixTimestamp: int64(unixTimestamp), diff --git a/pkg/commands/git_test.go b/pkg/commands/git_test.go index ab519e9ba..6e7df61aa 100644 --- a/pkg/commands/git_test.go +++ b/pkg/commands/git_test.go @@ -1716,7 +1716,7 @@ func TestGitCommandDiscardOldFileChanges(t *testing.T) { type scenario struct { testName string getLocalGitConfig func(string) (string, error) - commits []*Commit + commits []*models.Commit commitIndex int fileName string command func(string, ...string) *exec.Cmd @@ -1729,7 +1729,7 @@ func TestGitCommandDiscardOldFileChanges(t *testing.T) { func(string) (string, error) { return "", nil }, - []*Commit{}, + []*models.Commit{}, 0, "test999.txt", nil, @@ -1742,7 +1742,7 @@ func TestGitCommandDiscardOldFileChanges(t *testing.T) { func(string) (string, error) { return "true", nil }, - []*Commit{{Name: "commit", Sha: "123456"}}, + []*models.Commit{{Name: "commit", Sha: "123456"}}, 0, "test999.txt", nil, @@ -1755,7 +1755,7 @@ func TestGitCommandDiscardOldFileChanges(t *testing.T) { func(string) (string, error) { return "", nil }, - []*Commit{ + []*models.Commit{ {Name: "commit", Sha: "123456"}, {Name: "commit2", Sha: "abcdef"}, }, diff --git a/pkg/commands/patch_rebases.go b/pkg/commands/patch_rebases.go index f4d411514..6d032b446 100644 --- a/pkg/commands/patch_rebases.go +++ b/pkg/commands/patch_rebases.go @@ -5,10 +5,11 @@ import ( "github.com/go-errors/errors" "github.com/jesseduffield/lazygit/pkg/commands/patch" + "github.com/jesseduffield/lazygit/pkg/models" ) // DeletePatchesFromCommit applies a patch in reverse for a commit -func (c *GitCommand) DeletePatchesFromCommit(commits []*Commit, commitIndex int, p *patch.PatchManager) error { +func (c *GitCommand) DeletePatchesFromCommit(commits []*models.Commit, commitIndex int, p *patch.PatchManager) error { if err := c.BeginInteractiveRebaseForCommit(commits, commitIndex); err != nil { return err } @@ -35,7 +36,7 @@ func (c *GitCommand) DeletePatchesFromCommit(commits []*Commit, commitIndex int, return c.GenericMerge("rebase", "continue") } -func (c *GitCommand) MovePatchToSelectedCommit(commits []*Commit, sourceCommitIdx int, destinationCommitIdx int, p *patch.PatchManager) error { +func (c *GitCommand) MovePatchToSelectedCommit(commits []*models.Commit, sourceCommitIdx int, destinationCommitIdx int, p *patch.PatchManager) error { if sourceCommitIdx < destinationCommitIdx { if err := c.BeginInteractiveRebaseForCommit(commits, destinationCommitIdx); err != nil { return err @@ -136,7 +137,7 @@ func (c *GitCommand) MovePatchToSelectedCommit(commits []*Commit, sourceCommitId return c.GenericMerge("rebase", "continue") } -func (c *GitCommand) PullPatchIntoIndex(commits []*Commit, commitIdx int, p *patch.PatchManager, stash bool) error { +func (c *GitCommand) PullPatchIntoIndex(commits []*models.Commit, commitIdx int, p *patch.PatchManager, stash bool) error { if stash { if err := c.StashSave(c.Tr.SLocalize("StashPrefix") + commits[commitIdx].Sha); err != nil { return err @@ -189,7 +190,7 @@ func (c *GitCommand) PullPatchIntoIndex(commits []*Commit, commitIdx int, p *pat return c.GenericMerge("rebase", "continue") } -func (c *GitCommand) PullPatchIntoNewCommit(commits []*Commit, commitIdx int, p *patch.PatchManager) error { +func (c *GitCommand) PullPatchIntoNewCommit(commits []*models.Commit, commitIdx int, p *patch.PatchManager) error { if err := c.BeginInteractiveRebaseForCommit(commits, commitIdx); err != nil { return err } |