diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-23 14:20:28 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-23 15:11:06 +1000 |
commit | 2915134007be939bd43fae74cb7559b4cfdccc9d (patch) | |
tree | c7b61cc1bd35681de5ebf18113c9a44f27b08626 /pkg/commands | |
parent | 2f893bf3616cfee2bfe07f1b38cbf193423397c4 (diff) |
show file statuses in commit files view
Diffstat (limited to 'pkg/commands')
-rw-r--r-- | pkg/commands/commit_file.go | 11 | ||||
-rw-r--r-- | pkg/commands/git.go | 17 |
2 files changed, 17 insertions, 11 deletions
diff --git a/pkg/commands/commit_file.go b/pkg/commands/commit_file.go index 29ae53268..9aca23855 100644 --- a/pkg/commands/commit_file.go +++ b/pkg/commands/commit_file.go @@ -3,10 +3,13 @@ package commands // CommitFile : A git commit file type CommitFile struct { // Parent is the identifier of the parent object e.g. a commit SHA if this commit file is for a commit, or a stash entry ref like 'stash@{1}' - Parent string - Name string - DisplayString string - Status int // one of 'WHOLE' 'PART' 'NONE' + Parent string + Name string + + // Status tells us whether the file has been wholly or partially added to a patch. We might want to pull this logic up into the gui package and make it a map like we do with cherry picked commits + Status int // one of 'WHOLE' 'PART' 'NONE' + + ChangeStatus string // e.g. 'A' for added or 'M' for modified. This is based on the result from git diff --name-status } func (f *CommitFile) ID() string { diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 0d03eac2c..36c90228f 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -1052,7 +1052,7 @@ func (c *GitCommand) GetFilesInDiff(from string, to string, reverse bool, patchM reverseFlag = " -R " } - filenames, err := c.OSCommand.RunCommandWithOutput("git diff --name-only %s %s %s", reverseFlag, from, to) + filenames, err := c.OSCommand.RunCommandWithOutput("git diff --name-status %s %s %s", reverseFlag, from, to) if err != nil { return nil, err } @@ -1064,17 +1064,20 @@ func (c *GitCommand) GetFilesInDiff(from string, to string, reverse bool, patchM func (c *GitCommand) GetCommitFilesFromFilenames(filenames string, parent string, patchManager *patch.PatchManager) []*CommitFile { commitFiles := make([]*CommitFile, 0) - for _, file := range strings.Split(strings.TrimRight(filenames, "\n"), "\n") { + for _, line := range strings.Split(strings.TrimRight(filenames, "\n"), "\n") { + // typical result looks like 'A my_file' meaning my_file was added + changeStatus := line[0:1] + name := line[2:] status := patch.UNSELECTED if patchManager != nil && patchManager.To == parent { - status = patchManager.GetFileStatus(file) + status = patchManager.GetFileStatus(name) } commitFiles = append(commitFiles, &CommitFile{ - Parent: parent, - Name: file, - DisplayString: file, - Status: status, + Parent: parent, + Name: name, + ChangeStatus: changeStatus, + Status: status, }) } |