@@ -253,15 +253,21 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
253253 }
254254
255255 var treeList []* TreeEntry
256+ var parentEntry * TreeEntry
257+ fields := strings .SplitN (treePath , "/" , 2 )
256258 for _ , rootEntry := range rootEntries {
257- treeList = append ( treeList , & TreeEntry {
259+ treeEntry := & TreeEntry {
258260 Name : rootEntry .Name (),
259261 IsFile : rootEntry .Mode () != git .EntryModeTree ,
260262 Path : rootEntry .Name (),
261- })
263+ }
264+ treeList = append (treeList , treeEntry )
265+ if fields [0 ] == rootEntry .Name () {
266+ parentEntry = treeEntry
267+ }
262268 }
263269
264- if treePath == "" {
270+ if treePath == "" || parentEntry == nil {
265271 return treeList , nil
266272 }
267273
@@ -284,13 +290,24 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
284290 }
285291 }
286292
293+ for i := 1 ; i < len (fields ); i ++ {
294+ parentEntry .Children = []* TreeEntry {
295+ {
296+ Name : fields [i ],
297+ IsFile : false ,
298+ Path : path .Join (fields [:i + 1 ]... ),
299+ },
300+ }
301+ parentEntry = parentEntry .Children [0 ]
302+ }
303+
287304 entries , err := listEntry .Tree ().ListEntries ()
288305 if err != nil {
289306 return nil , err
290307 }
291308
292309 for _ , entry := range entries {
293- treeList = append (treeList , & TreeEntry {
310+ parentEntry . Children = append (parentEntry . Children , & TreeEntry {
294311 Name : entry .Name (),
295312 IsFile : entry .Mode () != git .EntryModeTree ,
296313 Path : path .Join (treePath , entry .Name ()),
0 commit comments