mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-01-18 05:17:55 +02:00
bubble up tracked files in flat file view
This commit is contained in:
parent
dab5ba363c
commit
9e5f031553
@ -97,10 +97,35 @@ func BuildFlatTreeFromFiles(files []*models.File) *FileNode {
|
|||||||
rootAux := BuildTreeFromFiles(files)
|
rootAux := BuildTreeFromFiles(files)
|
||||||
sortedFiles := rootAux.GetLeaves()
|
sortedFiles := rootAux.GetLeaves()
|
||||||
|
|
||||||
// Move merge conflicts to top. This is the one way in which sorting
|
// from top down we have merge conflict files, then tracked file, then untracked
|
||||||
// differs between flat mode and tree mode
|
// files. This is the one way in which sorting differs between flat mode and
|
||||||
|
// tree mode
|
||||||
sort.SliceStable(sortedFiles, func(i, j int) bool {
|
sort.SliceStable(sortedFiles, func(i, j int) bool {
|
||||||
return sortedFiles[i].File != nil && sortedFiles[i].File.HasMergeConflicts && !(sortedFiles[j].File != nil && sortedFiles[j].File.HasMergeConflicts)
|
iFile := sortedFiles[i].File
|
||||||
|
jFile := sortedFiles[j].File
|
||||||
|
|
||||||
|
// never going to happen but just to be safe
|
||||||
|
if iFile == nil || jFile == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if iFile.HasMergeConflicts && !jFile.HasMergeConflicts {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if jFile.HasMergeConflicts && !iFile.HasMergeConflicts {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if iFile.Tracked && !jFile.Tracked {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if jFile.Tracked && !iFile.Tracked {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
return &FileNode{Children: sortedFiles}
|
return &FileNode{Children: sortedFiles}
|
||||||
|
@ -236,33 +236,59 @@ func TestBuildFlatTreeFromFiles(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "paths that can be sorted including a merge conflict file",
|
name: "tracked, untracked, and conflicted files",
|
||||||
files: []*models.File{
|
files: []*models.File{
|
||||||
{
|
{
|
||||||
Name: "z",
|
Name: "a2",
|
||||||
|
Tracked: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "a1",
|
||||||
|
Tracked: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "c2",
|
||||||
HasMergeConflicts: true,
|
HasMergeConflicts: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "b",
|
Name: "c1",
|
||||||
|
HasMergeConflicts: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "a",
|
Name: "b2",
|
||||||
|
Tracked: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "b1",
|
||||||
|
Tracked: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: &FileNode{
|
expected: &FileNode{
|
||||||
Path: "",
|
Path: "",
|
||||||
Children: []*FileNode{
|
Children: []*FileNode{
|
||||||
{
|
{
|
||||||
File: &models.File{Name: "z", HasMergeConflicts: true},
|
File: &models.File{Name: "c1", HasMergeConflicts: true},
|
||||||
Path: "z",
|
Path: "c1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
File: &models.File{Name: "a"},
|
File: &models.File{Name: "c2", HasMergeConflicts: true},
|
||||||
Path: "a",
|
Path: "c2",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
File: &models.File{Name: "b"},
|
File: &models.File{Name: "b1", Tracked: true},
|
||||||
Path: "b",
|
Path: "b1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
File: &models.File{Name: "b2", Tracked: true},
|
||||||
|
Path: "b2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
File: &models.File{Name: "a1", Tracked: false},
|
||||||
|
Path: "a1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
File: &models.File{Name: "a2", Tracked: false},
|
||||||
|
Path: "a2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user