1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-31 14:24:25 +03:00

show file statuses in commit files view

This commit is contained in:
Jesse Duffield
2020-08-23 14:20:28 +10:00
parent 2f893bf361
commit 2915134007
3 changed files with 36 additions and 12 deletions

View File

@ -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 {

View File

@ -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,
})
}