diff --git a/models/git.go b/models/git.go
index f20e663b1..10e8ca48b 100644
--- a/models/git.go
+++ b/models/git.go
@@ -300,6 +300,12 @@ func ParsePatch(reader io.Reader) (*Diff, error) {
 		}
 
 		i = i + 1
+
+		// Diff data too large.
+		if i == 10000 {
+			return &Diff{}, nil
+		}
+
 		if line == "" {
 			continue
 		}
diff --git a/routers/repo/commit.go b/routers/repo/commit.go
index fed1a6bad..dbfd9af29 100644
--- a/routers/repo/commit.go
+++ b/routers/repo/commit.go
@@ -103,6 +103,7 @@ func Diff(ctx *middleware.Context, params martini.Params) {
 	ctx.Data["Title"] = commit.Message() + " ยท " + base.ShortSha(commitId)
 	ctx.Data["Commit"] = commit
 	ctx.Data["Diff"] = diff
+	ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
 	ctx.Data["IsRepoToolbarCommits"] = true
 	ctx.Data["SourcePath"] = "/" + path.Join(userName, repoName, "src", commitId)
 	ctx.Data["RawPath"] = "/" + path.Join(userName, repoName, "raw", commitId)
diff --git a/templates/repo/diff.tmpl b/templates/repo/diff.tmpl
index a041284d0..796a8e94c 100644
--- a/templates/repo/diff.tmpl
+++ b/templates/repo/diff.tmpl
@@ -20,6 +20,9 @@
             </div>
         </div>
 
+        {{if .DiffNotAvailable}}
+        <h4>Diff Data Not Available.</h4>
+        {{else}}
         <div class="diff-detail-box diff-box">
             <a class="pull-right btn btn-default" data-toggle="collapse" data-target="#diff-files">Show Diff Stats</a>
             <p class="showing">
@@ -97,6 +100,7 @@
             </div>
         </div>
         {{end}}
+        {{end}}
     </div>
 </div>
 {{template "base/footer" .}}