summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--releases.moxie1
-rw-r--r--src/main/java/com/gitblit/wicket/pages/RepositoryPage.java24
-rw-r--r--src/main/java/com/gitblit/wicket/pages/TreePage.java22
3 files changed, 36 insertions, 11 deletions
diff --git a/releases.moxie b/releases.moxie
index df1ecce4..b2968a11 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -25,6 +25,7 @@ r20: {
- Removed internal Gitblit ref exclusions in the upload pack
- Removed "show readme" setting in favor of automatic detection
- Support plain text "readme" files
+ - Determine best commit id (e.g. "master") for the tree and docs pages and use that in links
additions:
- Added branch graph image servlet based on EGit's branch graph renderer (issue-194)
- Added option to render Markdown commit messages (issue-203)
diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index b31bc3b5..2df0a0e0 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -399,6 +399,30 @@ public abstract class RepositoryPage extends RootPage {
return commit;
}
+ protected String getBestCommitId(RevCommit commit) {
+ String head = null;
+ try {
+ head = r.resolve(getRepositoryModel().HEAD).getName();
+ } catch (Exception e) {
+ }
+
+ String id = commit.getName();
+ if (!StringUtils.isEmpty(head) && head.equals(id)) {
+ // match default branch
+ return Repository.shortenRefName(getRepositoryModel().HEAD);
+ }
+
+ // find first branch match
+ for (RefModel ref : JGitUtils.getLocalBranches(r, false, -1)) {
+ if (ref.getObjectId().getName().equals(id)) {
+ return ref.getName();
+ }
+ }
+
+ // return sha
+ return id;
+ }
+
protected Map<String, SubmoduleModel> getSubmodules(RevCommit commit) {
if (submodules == null) {
submodules = new HashMap<String, SubmoduleModel>();
diff --git a/src/main/java/com/gitblit/wicket/pages/TreePage.java b/src/main/java/com/gitblit/wicket/pages/TreePage.java
index 870b75d1..df6507f5 100644
--- a/src/main/java/com/gitblit/wicket/pages/TreePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TreePage.java
@@ -76,8 +76,8 @@ public class TreePage extends RepositoryPage {
paths.add(0, model);
}
+ final String id = getBestCommitId(commit);
final ByteFormat byteFormat = new ByteFormat();
-
final String baseUrl = WicketUtils.getGitblitURL(getRequest());
// changed paths list
@@ -96,7 +96,7 @@ public class TreePage extends RepositoryPage {
item.add(new Label("pathSize", ""));
item.add(new LinkPanel("pathName", null, entry.name, TreePage.class,
WicketUtils
- .newPathParameter(repositoryName, entry.commitId, entry.path)));
+ .newPathParameter(repositoryName, id, entry.path)));
item.add(new Label("pathLinks", ""));
} else {
if (entry.isTree()) {
@@ -104,16 +104,16 @@ public class TreePage extends RepositoryPage {
item.add(WicketUtils.newImage("pathIcon", "folder_16x16.png"));
item.add(new Label("pathSize", ""));
item.add(new LinkPanel("pathName", "list", entry.name, TreePage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
entry.path)));
// links
Fragment links = new Fragment("pathLinks", "treeLinks", this);
links.add(new BookmarkablePageLink<Void>("tree", TreePage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
entry.path)));
links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
entry.path)));
links.add(new CompressedDownloadsPanel("compressedLinks", baseUrl,
repositoryName, objectId, entry.path));
@@ -141,7 +141,7 @@ public class TreePage extends RepositoryPage {
WicketUtils.newPathParameter(submodulePath, submoduleId,
"")).setEnabled(hasSubmodule));
links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
entry.path)));
links.add(new CompressedDownloadsPanel("compressedLinks", baseUrl,
submodulePath, submoduleId, "").setEnabled(hasSubmodule));
@@ -157,21 +157,21 @@ public class TreePage extends RepositoryPage {
item.add(WicketUtils.getFileImage("pathIcon", entry.name));
item.add(new Label("pathSize", byteFormat.format(entry.size)));
item.add(new LinkPanel("pathName", "list", displayPath, BlobPage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
path)));
// links
Fragment links = new Fragment("pathLinks", "blobLinks", this);
links.add(new BookmarkablePageLink<Void>("view", BlobPage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
path)));
links.add(new BookmarkablePageLink<Void>("raw", RawPage.class, WicketUtils
- .newPathParameter(repositoryName, entry.commitId, path)));
+ .newPathParameter(repositoryName, id, path)));
links.add(new BookmarkablePageLink<Void>("blame", BlamePage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
path)));
links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
- WicketUtils.newPathParameter(repositoryName, entry.commitId,
+ WicketUtils.newPathParameter(repositoryName, id,
path)));
item.add(links);
}