fix: fix diff of renamed files

This commit is contained in:
Ryooooooga 2022-04-05 23:35:41 +09:00 committed by Jesse Duffield
parent 954d1a8147
commit 53257db99d
3 changed files with 17 additions and 1 deletions

View file

@ -230,6 +230,7 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain
trackedArg := "--"
colorArg := self.UserConfig.Git.Paging.ColorArg
quotedPath := self.cmd.Quote(node.GetPath())
quotedPrevPath := ""
ignoreWhitespaceArg := ""
contextSize := self.UserConfig.Git.DiffContextSize
if cached {
@ -244,8 +245,11 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain
if ignoreWhitespace {
ignoreWhitespaceArg = " --ignore-all-space"
}
if prevPath := node.GetPreviousPath(); prevPath != "" {
quotedPrevPath = " " + self.cmd.Quote(prevPath)
}
cmdStr := fmt.Sprintf("git diff --submodule --no-ext-diff --unified=%d --color=%s%s%s %s %s", contextSize, colorArg, ignoreWhitespaceArg, cachedArg, trackedArg, quotedPath)
cmdStr := fmt.Sprintf("git diff --submodule --no-ext-diff --unified=%d --color=%s%s%s %s %s%s", contextSize, colorArg, ignoreWhitespaceArg, cachedArg, trackedArg, quotedPath, quotedPrevPath)
return self.cmd.New(cmdStr).DontLog()
}

View file

@ -27,6 +27,7 @@ type IFile interface {
GetHasStagedChanges() bool
GetIsTracked() bool
GetPath() string
GetPreviousPath() string
}
func (f *File) IsRename() bool {
@ -85,3 +86,7 @@ func (f *File) GetPath() string {
// TODO: remove concept of name; just use path
return f.Name
}
func (f *File) GetPreviousPath() string {
return f.PreviousName
}

View file

@ -42,6 +42,13 @@ func (s *FileNode) GetPath() string {
return s.Path
}
func (s *FileNode) GetPreviousPath() string {
if s.File != nil {
return s.File.GetPreviousPath()
}
return ""
}
func (s *FileNode) GetChildren() []INode {
return slices.Map(s.Children, func(child *FileNode) INode {
return child