diff --git a/models/repo.go b/models/repo.go
index 610c359747..6abfee747a 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -5,6 +5,7 @@
 package models
 
 import (
+	"container/list"
 	"errors"
 	"fmt"
 	"io/ioutil"
@@ -560,7 +561,7 @@ func GetCommit(userName, repoName, branchname, commitid string) (*git.Commit, er
 }
 
 // GetCommits returns all commits of given branch of repository.
-func GetCommits(userName, reposName, branchname string) ([]*git.Commit, error) {
+func GetCommits(userName, reposName, branchname string) (*list.List, error) {
 	repo, err := git.OpenRepository(RepoPath(userName, reposName))
 	if err != nil {
 		return nil, err
diff --git a/modules/base/template.go b/modules/base/template.go
index 4517cd47aa..db79340e75 100644
--- a/modules/base/template.go
+++ b/modules/base/template.go
@@ -5,6 +5,7 @@
 package base
 
 import (
+	"container/list"
 	"html/template"
 )
 
@@ -12,6 +13,23 @@ func Str2html(raw string) template.HTML {
 	return template.HTML(raw)
 }
 
+func Range(l int) []int {
+	return make([]int, l)
+}
+
+func List(l *list.List) chan interface{} {
+	e := l.Front()
+	c := make(chan interface{})
+	go func() {
+		for e != nil {
+			c <- e.Value
+			e = e.Next()
+		}
+		close(c)
+	}()
+	return c
+}
+
 var TemplateFuncs template.FuncMap = map[string]interface{}{
 	"AppName": func() string {
 		return AppName
@@ -30,4 +48,5 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
 	"ActionIcon": ActionIcon,
 	"ActionDesc": ActionDesc,
 	"DateFormat": DateFormat,
+	"List":       List,
 }
diff --git a/templates/repo/commits.tmpl b/templates/repo/commits.tmpl
index 9190a030a3..4bffb9daf7 100644
--- a/templates/repo/commits.tmpl
+++ b/templates/repo/commits.tmpl
@@ -5,8 +5,9 @@
 <div id="gogs-body" class="container">
     <div id="gogs-commits">
     <ul>
-    {{range .Commits}}
-    <li>{{.Committer.Name}} - {{.Id}} - {{.Message}} - {{.Committer.When}}</li>
+    {{$r := List .Commits}}
+    {{range $r}}
+		    <li>{{.Committer.Name}} - {{.Id}} - {{.Message}} - {{.Committer.When}}</li>
     {{end}}
     </ul>
     </div>