summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-03-29 16:01:26 -0400
committerJames Moger <james.moger@gitblit.com>2013-03-29 16:01:26 -0400
commited9d6746e53baa42d4e3e476736592c160184ac7 (patch)
tree276fa784f9b852b1d3886ab9a6671393562239a4 /src/main
parentd37bce55bbb60aa2130b40673d28ec8c8f4049c1 (diff)
downloadgitblit-ed9d6746e53baa42d4e3e476736592c160184ac7.tar.gz
gitblit-ed9d6746e53baa42d4e3e476736592c160184ac7.zip
Improve blame page error checking
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/gitblit/wicket/pages/BlamePage.html2
-rw-r--r--src/main/java/com/gitblit/wicket/pages/BlamePage.java29
2 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/wicket/pages/BlamePage.html b/src/main/java/com/gitblit/wicket/pages/BlamePage.html
index 9391eaf0..722cf3d1 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlamePage.html
+++ b/src/main/java/com/gitblit/wicket/pages/BlamePage.html
@@ -17,6 +17,8 @@
<!-- breadcrumbs -->
<div wicket:id="breadcrumbs">[breadcrumbs]</div>
+
+ <div wicket:id="missingBlob">[missing blob]</div>
<!-- blame content -->
<table class="annotated" style="margin-bottom:5px;">
diff --git a/src/main/java/com/gitblit/wicket/pages/BlamePage.java b/src/main/java/com/gitblit/wicket/pages/BlamePage.java
index d76181d2..9b4c15ca 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlamePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlamePage.java
@@ -32,7 +32,9 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.AnnotatedLine;
+import com.gitblit.models.PathModel;
import com.gitblit.utils.DiffUtils;
+import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
@@ -69,6 +71,24 @@ public class BlamePage extends RepositoryPage {
"EEEE, MMMM d, yyyy HH:mm Z");
final DateFormat df = new SimpleDateFormat(format);
df.setTimeZone(getTimeZone());
+
+ PathModel pathModel = null;
+ List<PathModel> paths = JGitUtils.getFilesInPath(getRepository(), StringUtils.getRootPath(blobPath), commit);
+ for (PathModel path : paths) {
+ if (path.path.equals(blobPath)) {
+ pathModel = path;
+ break;
+ }
+ }
+
+ if (pathModel == null) {
+ add(new Label("annotation").setVisible(false));
+ add(new Label("missingBlob", missingBlob(blobPath, commit)).setEscapeModelStrings(false));
+ return;
+ }
+
+ add(new Label("missingBlob").setVisible(false));
+
List<AnnotatedLine> lines = DiffUtils.blame(getRepository(), blobPath, objectId);
ListDataProvider<AnnotatedLine> blameDp = new ListDataProvider<AnnotatedLine>(lines);
DataView<AnnotatedLine> blameView = new DataView<AnnotatedLine>("annotation", blameDp) {
@@ -126,4 +146,13 @@ public class BlamePage extends RepositoryPage {
protected String getPageName() {
return getString("gb.blame");
}
+
+ protected String missingBlob(String blobPath, RevCommit commit) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<div class=\"alert alert-error\">");
+ String pattern = getString("gb.doesNotExistInTree").replace("{0}", "<b>{0}</b>").replace("{1}", "<b>{1}</b>");
+ sb.append(MessageFormat.format(pattern, blobPath, commit.getTree().getId().getName()));
+ sb.append("</div>");
+ return sb.toString();
+ }
}