Skip to content

Commit 64c7e08

Browse files
committed
Fix bug
1 parent c949f42 commit 64c7e08

File tree

1 file changed

+25
-30
lines changed

1 file changed

+25
-30
lines changed

services/repository/files/tree.go

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -413,50 +413,45 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
413413
return nil, err
414414
}
415415

416-
var treeList []*TreeEntry
416+
var dir string
417+
var lastDirEntry *git.TreeEntry
418+
if treePath == "" {
419+
dir = treePath
420+
lastDirEntry = rootEntry
421+
} else {
422+
lastDirEntry, err = commit.GetTreeEntryByPath(treePath)
423+
if err != nil {
424+
return nil, err
425+
}
426+
dir = treePath
427+
if lastDirEntry.IsRegular() {
428+
dir = path.Dir(treePath)
429+
lastDirEntry, err = commit.GetTreeEntryByPath(dir)
430+
if err != nil {
431+
return nil, err
432+
}
433+
}
434+
}
435+
436+
treeList := make([]*TreeEntry, 0, len(rootEntries))
437+
fields := strings.Split(dir, "/")
417438
var parentEntry *TreeEntry
418-
fields := strings.SplitN(treePath, "/", 2)
419439
for _, entry := range rootEntries {
420440
treeEntry := &TreeEntry{
421441
Name: entry.Name(),
422442
IsFile: entry.Mode() != git.EntryModeTree,
423443
Path: entry.Name(),
424444
}
425445
treeList = append(treeList, treeEntry)
426-
if fields[0] == entry.Name() {
427-
if len(fields) == 1 {
428-
if treeEntry.IsFile {
429-
return treeList, nil
430-
}
431-
}
446+
if dir != "" && fields[0] == entry.Name() {
432447
parentEntry = treeEntry
433448
}
434449
}
435450

436-
if treePath == "" || parentEntry == nil {
451+
if dir == "" || parentEntry == nil {
437452
return treeList, nil
438453
}
439454

440-
listEntry, err := commit.GetTreeEntryByPath(treePath)
441-
if err != nil {
442-
return nil, err
443-
}
444-
445-
dir := treePath
446-
// list current entry or parent entry if it's a file's children
447-
// If the entry is a file, we return a FileContentResponse object
448-
if listEntry.IsRegular() {
449-
dir = path.Dir(treePath)
450-
if dir == "" {
451-
return treeList, nil
452-
}
453-
fields = fields[:len(fields)-1]
454-
listEntry, err = commit.GetTreeEntryByPath(dir)
455-
if err != nil {
456-
return nil, err
457-
}
458-
}
459-
460455
for i := 1; i < len(fields); i++ {
461456
parentEntry.Children = []*TreeEntry{
462457
{
@@ -468,7 +463,7 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
468463
parentEntry = parentEntry.Children[0]
469464
}
470465

471-
entries, err := listEntry.Tree().ListEntries()
466+
entries, err := lastDirEntry.Tree().ListEntries()
472467
if err != nil {
473468
return nil, err
474469
}

0 commit comments

Comments
 (0)