From 2d90e1e8ee5ccb3d2acd8678e68137645c9e65bd Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Fri, 21 Aug 2020 19:53:45 +1000 Subject: commit files kind of generalised --- pkg/commands/git.go | 13 +++++++++---- pkg/commands/git_test.go | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'pkg/commands') diff --git a/pkg/commands/git.go b/pkg/commands/git.go index b52c989d7..eac5c0a53 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -1045,9 +1045,14 @@ func (c *GitCommand) CherryPickCommits(commits []*Commit) error { return c.OSCommand.RunPreparedCommand(cmd) } -// GetCommitFiles get the specified commit files -func (c *GitCommand) GetCommitFiles(commitSha string, patchManager *patch.PatchManager) ([]*CommitFile, error) { - files, err := c.OSCommand.RunCommandWithOutput("git diff-tree --no-commit-id --name-only -r --no-renames %s", commitSha) +// GetFilesInRef get the specified commit files +func (c *GitCommand) GetFilesInRef(commitSha string, isStash bool, patchManager *patch.PatchManager) ([]*CommitFile, error) { + command := "git diff-tree" + if isStash { + command = "git stash show" + } + + files, err := c.OSCommand.RunCommandWithOutput("%s --no-commit-id --name-only -r --no-renames %s", command, commitSha) if err != nil { return nil, err } @@ -1083,7 +1088,7 @@ func (c *GitCommand) ShowCommitFileCmdStr(commitSha, fileName string, plain bool colorArg = "never" } - return fmt.Sprintf("git show --no-renames --color=%s %s -- %s", colorArg, commitSha, fileName) + return fmt.Sprintf("git diff --no-renames --color=%s %s^..%s -- %s", colorArg, commitSha, commitSha, fileName) } // CheckoutFile checks out the file for the given commit diff --git a/pkg/commands/git_test.go b/pkg/commands/git_test.go index a376e10bf..fba4d0482 100644 --- a/pkg/commands/git_test.go +++ b/pkg/commands/git_test.go @@ -1852,8 +1852,8 @@ func TestGitCommandShowCommitFile(t *testing.T) { } } -// TestGitCommandGetCommitFiles is a function. -func TestGitCommandGetCommitFiles(t *testing.T) { +// TestGitCommandGetFilesInRef is a function. +func TestGitCommandGetFilesInRef(t *testing.T) { type scenario struct { testName string commitSha string @@ -1886,7 +1886,7 @@ func TestGitCommandGetCommitFiles(t *testing.T) { for _, s := range scenarios { t.Run(s.testName, func(t *testing.T) { gitCmd.OSCommand.command = s.command - s.test(gitCmd.GetCommitFiles(s.commitSha, nil)) + s.test(gitCmd.GetFilesInRef(s.commitSha, false, nil)) }) } } -- cgit v1.2.3