From 6bdd6f9b18136a6066f3fc87349037027eb7a499 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Sat, 15 Mar 2014 23:38:11 +0800
Subject: [PATCH] add size for file

---
 models/repo.go             | 63 ----------------------------------------------
 models/repo2.go            |  7 ++++++
 templates/repo/single.tmpl |  2 +-
 3 files changed, 8 insertions(+), 64 deletions(-)

diff --git a/models/repo.go b/models/repo.go
index c52d0a1f24..125abfc342 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -261,69 +261,6 @@ func GetRepositoryCount(user *User) (int64, error) {
 	return orm.Count(&Repository{OwnerId: user.Id})
 }
 
-/*
-type RepoFile struct {
-	Id      *git.Oid
-	Type    int
-	Name    string
-	Path    string
-	Message string
-	Created time.Time
-}
-
-func (f *RepoFile) IsFile() bool {
-	return f.Type == git.FilemodeBlob || f.Type == git.FilemodeBlobExecutable
-}
-
-func (f *RepoFile) IsDir() bool {
-	return f.Type == git.FilemodeTree
-}*/
-
-/*
-func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, error) {
-	f := RepoPath(userName, reposName)
-
-	repo, err := git.OpenRepository(f)
-	if err != nil {
-		return nil, err
-	}
-
-	repo.LookupReference("refs/heads/" + branchName)
-
-	obj, err := repo.RevparseSingle("HEAD")
-	if err != nil {
-		return nil, err
-	}
-	lastCommit := obj.(*git.Commit)
-	var repofiles []*RepoFile
-	tree, err := lastCommit.Tree()
-	if err != nil {
-		return nil, err
-	}
-	//var i uint64 = 0
-	if rpath != "" {
-		rpath = rpath + "/"
-	}
-	//fmt.Println("...", rpath, "...")
-
-	tree.Walk(func(dirname string, entry *git.TreeEntry) int {
-		if dirname == rpath {
-			//fmt.Println("====", dirname, "==", entry.Name)
-			repofiles = append(repofiles, &RepoFile{
-				entry.Id,
-				entry.Filemode,
-				entry.Name,
-				path.Join(dirname, entry.Name),
-				lastCommit.Message(),
-				lastCommit.Committer().When,
-			})
-		}
-		return 0
-	})
-
-	return repofiles, nil
-}*/
-
 func StarReposiory(user *User, repoName string) error {
 	return nil
 }
diff --git a/models/repo2.go b/models/repo2.go
index d879130ace..e3fdc2784b 100644
--- a/models/repo2.go
+++ b/models/repo2.go
@@ -16,6 +16,7 @@ type RepoFile struct {
 	Path    string
 	Message string
 	Created time.Time
+	Size    int64
 }
 
 func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, error) {
@@ -40,6 +41,10 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile,
 	var repofiles []*RepoFile
 	lastCommit.Tree.Walk(func(dirname string, entry *git.TreeEntry) int {
 		if dirname == rpath {
+			size, err := repo.ObjectSize(entry.Id)
+			if err != nil {
+				return 0
+			}
 			switch entry.Filemode {
 			case git.FileModeBlob, git.FileModeBlobExec:
 				repofiles = append(repofiles, &RepoFile{
@@ -47,6 +52,7 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile,
 					path.Join(dirname, entry.Name),
 					lastCommit.Message(),
 					lastCommit.Committer.When,
+					size,
 				})
 			case git.FileModeTree:
 				repodirs = append(repodirs, &RepoFile{
@@ -54,6 +60,7 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile,
 					path.Join(dirname, entry.Name),
 					lastCommit.Message(),
 					lastCommit.Committer.When,
+					size,
 				})
 			}
 		}
diff --git a/templates/repo/single.tmpl b/templates/repo/single.tmpl
index f71e87f0fb..b99950ef51 100644
--- a/templates/repo/single.tmpl
+++ b/templates/repo/single.tmpl
@@ -47,7 +47,7 @@
                     {{if .IsDir}}
                     <a href="/{{$username}}/{{$reponame}}/tree/{{$branchname}}/{{.Path}}">{{.Name}}</a>
                     {{else}}
-                    <a href="#">{{.Name}}</a>
+                    <a href="#">{{.Name}} - {{.Size}}</a>
                     {{end}}</td>
 	                <td class="date"><time datetime="{{.Created}}" data-title="true" title="{{.Created}}">{{TimeSince .Created}}</time></td>
 	                <td class="text">{{.Message}}</td>