1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-28 16:02:01 +03:00

showing changes for directories

This commit is contained in:
Jesse Duffield
2021-03-14 18:46:22 +11:00
parent 9f2d7adb8e
commit 77a7619690
6 changed files with 64 additions and 24 deletions

View File

@ -158,23 +158,22 @@ func (c *GitCommand) WorktreeFileDiff(file *models.File, plain bool, cached bool
return s
}
func (c *GitCommand) WorktreeFileDiffCmdStr(file *models.File, plain bool, cached bool) string {
func (c *GitCommand) WorktreeFileDiffCmdStr(node models.IStatusLine, plain bool, cached bool) string {
cachedArg := ""
trackedArg := "--"
colorArg := c.colorArg()
split := strings.Split(file.Name, models.RENAME_SEPARATOR) // in case of a renamed file we get the new filename
fileName := c.OSCommand.Quote(split[len(split)-1])
path := c.OSCommand.Quote(node.GetPath())
if cached {
cachedArg = "--cached"
}
if !file.Tracked && !file.HasStagedChanges && !cached {
if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached {
trackedArg = "--no-index -- /dev/null"
}
if plain {
colorArg = "never"
}
return fmt.Sprintf("git diff --submodule --no-ext-diff --color=%s %s %s %s", colorArg, cachedArg, trackedArg, fileName)
return fmt.Sprintf("git diff --submodule --no-ext-diff --color=%s %s %s %s", colorArg, cachedArg, trackedArg, path)
}
func (c *GitCommand) ApplyPatch(patch string, flags ...string) error {

View File

@ -59,3 +59,20 @@ func (f *File) SubmoduleConfig(configs []*SubmoduleConfig) *SubmoduleConfig {
return nil
}
func (f *File) GetHasUnstagedChanges() bool {
return f.HasUnstagedChanges
}
func (f *File) GetHasStagedChanges() bool {
return f.HasStagedChanges
}
func (f *File) GetIsTracked() bool {
return f.Tracked
}
func (f *File) GetPath() string {
names := f.Names()
return names[len(names)-1]
}

View File

@ -0,0 +1,8 @@
package models
type IStatusLine interface {
GetHasUnstagedChanges() bool
GetHasStagedChanges() bool
GetIsTracked() bool
GetPath() string
}

View File

@ -20,23 +20,23 @@ func (s *StatusLineNode) GetShortStatus() string {
firstChar := " "
secondChar := " "
if s.HasStagedChanges() {
if s.GetHasStagedChanges() {
firstChar = "M"
}
if s.HasUnstagedChanges() {
if s.GetHasUnstagedChanges() {
secondChar = "M"
}
return firstChar + secondChar
}
func (s *StatusLineNode) HasUnstagedChanges() bool {
func (s *StatusLineNode) GetHasUnstagedChanges() bool {
if s.IsLeaf() {
return s.File.HasUnstagedChanges
}
for _, child := range s.Children {
if child.HasUnstagedChanges() {
if child.GetHasUnstagedChanges() {
return true
}
}
@ -44,13 +44,13 @@ func (s *StatusLineNode) HasUnstagedChanges() bool {
return false
}
func (s *StatusLineNode) HasStagedChanges() bool {
func (s *StatusLineNode) GetHasStagedChanges() bool {
if s.IsLeaf() {
return s.File.HasStagedChanges
}
for _, child := range s.Children {
if child.HasStagedChanges() {
if child.GetHasStagedChanges() {
return true
}
}
@ -136,3 +136,16 @@ func (s *StatusLineNode) sortChildren() {
// TODO: think about making this in-place
s.Children = sortedChildren
}
func (s *StatusLineNode) GetIsTracked() bool {
if s.File != nil {
return s.File.GetIsTracked()
}
// pretty sure I'm allowed to do this
return true
}
func (s *StatusLineNode) GetPath() string {
return s.Path
}