From ab1e1148ba6ec2a0e53ff54398173204febc9a4a Mon Sep 17 00:00:00 2001 From: James Moger Date: Thu, 24 Oct 2013 23:36:28 -0400 Subject: Determine best commit id for the commit and use that in links Change-Id: I2c0f5dbb479c06402645cbb92e4845eed29d6726 --- .../com/gitblit/wicket/pages/RepositoryPage.java | 24 ++++++++++++++++++++++ .../java/com/gitblit/wicket/pages/TreePage.java | 22 ++++++++++---------- 2 files changed, 35 insertions(+), 11 deletions(-) (limited to 'src/main/java/com/gitblit') 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 getSubmodules(RevCommit commit) { if (submodules == null) { submodules = new HashMap(); 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("tree", TreePage.class, - WicketUtils.newPathParameter(repositoryName, entry.commitId, + WicketUtils.newPathParameter(repositoryName, id, entry.path))); links.add(new BookmarkablePageLink("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("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("view", BlobPage.class, - WicketUtils.newPathParameter(repositoryName, entry.commitId, + WicketUtils.newPathParameter(repositoryName, id, path))); links.add(new BookmarkablePageLink("raw", RawPage.class, WicketUtils - .newPathParameter(repositoryName, entry.commitId, path))); + .newPathParameter(repositoryName, id, path))); links.add(new BookmarkablePageLink("blame", BlamePage.class, - WicketUtils.newPathParameter(repositoryName, entry.commitId, + WicketUtils.newPathParameter(repositoryName, id, path))); links.add(new BookmarkablePageLink("history", HistoryPage.class, - WicketUtils.newPathParameter(repositoryName, entry.commitId, + WicketUtils.newPathParameter(repositoryName, id, path))); item.add(links); } -- cgit v1.2.3