Browse Source

show folder first on file list page

Lunny Xiao 11 years ago
parent
commit
218cafed1d
1 changed files with 23 additions and 10 deletions
  1. 23 10
      models/repo2.go

+ 23 - 10
models/repo2.go

@@ -8,7 +8,7 @@ import (
 	"path"
 	"time"
 
-	git "github.com/speedata/gogit"
+	git "github.com/gogits/git"
 )
 
 type RepoFile struct {
@@ -46,20 +46,33 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile,
 		return nil, err
 	}
 
+	var repodirs []*RepoFile
 	var repofiles []*RepoFile
 	lastCommit.Tree.Walk(func(dirname string, entry *git.TreeEntry) int {
 		if dirname == rpath {
-			repofiles = append(repofiles, &RepoFile{
-				entry.Id,
-				entry.Filemode,
-				entry.Name,
-				path.Join(dirname, entry.Name),
-				lastCommit.Message(),
-				lastCommit.Committer.When,
-			})
+			switch entry.Filemode {
+			case git.FileModeBlob, git.FileModeBlobExec:
+				repofiles = append(repofiles, &RepoFile{
+					entry.Id,
+					entry.Filemode,
+					entry.Name,
+					path.Join(dirname, entry.Name),
+					lastCommit.Message(),
+					lastCommit.Committer.When,
+				})
+			case git.FileModeTree:
+				repodirs = append(repodirs, &RepoFile{
+					entry.Id,
+					entry.Filemode,
+					entry.Name,
+					path.Join(dirname, entry.Name),
+					lastCommit.Message(),
+					lastCommit.Committer.When,
+				})
+			}
 		}
 		return 0
 	})
 
-	return repofiles, nil
+	return append(repodirs, repofiles...), nil
 }