From 5cc4f299b2a1138687cbaea73257abab08e245a4 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sat, 04 Jun 2011 14:23:55 -0400 Subject: [PATCH] Fixed refs linking problem. Author metrics are lowercase. --- src/com/gitblit/wicket/panels/TagsPanel.java | 2 tests/com/gitblit/tests/JGitUtilsTest.java | 10 ++-- src/com/gitblit/utils/TicgitUtils.java | 4 +- src/com/gitblit/wicket/panels/BranchesPanel.java | 4 +- src/com/gitblit/wicket/panels/RefsPanel.java | 56 +++++++++++++++++---------- distrib/users.properties | 2 src/com/gitblit/utils/MetricUtils.java | 10 ++-- src/com/gitblit/wicket/pages/TagPage.java | 2 src/com/gitblit/utils/JGitUtils.java | 28 ++++++++------ 9 files changed, 68 insertions(+), 50 deletions(-) diff --git a/distrib/users.properties b/distrib/users.properties index a7ebc67..f3e5075 100644 --- a/distrib/users.properties +++ b/distrib/users.properties @@ -1,3 +1,3 @@ ## Git:Blit realm file format: username=password,\#permission,repository1,repository2... -#Thu Jun 02 22:11:15 EDT 2011 +#Sat Jun 04 14:21:04 EDT 2011 admin=admin,\#admin diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index 2590a30..6e02b9c 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -211,7 +211,7 @@ } public static Map<ObjectId, List<RefModel>> getAllRefs(Repository r) { - List<RefModel> list = getRefs(r, org.eclipse.jgit.lib.RefDatabase.ALL, -1); + List<RefModel> list = getRefs(r, org.eclipse.jgit.lib.RefDatabase.ALL, true, -1); Map<ObjectId, List<RefModel>> refs = new HashMap<ObjectId, List<RefModel>>(); for (RefModel ref : list) { ObjectId objectid = ref.getReferencedObjectId(); @@ -613,23 +613,23 @@ return list; } - public static List<RefModel> getTags(Repository r, int maxCount) { - return getRefs(r, Constants.R_TAGS, maxCount); + public static List<RefModel> getTags(Repository r, boolean fullName, int maxCount) { + return getRefs(r, Constants.R_TAGS, fullName, maxCount); } - public static List<RefModel> getLocalBranches(Repository r, int maxCount) { - return getRefs(r, Constants.R_HEADS, maxCount); + public static List<RefModel> getLocalBranches(Repository r, boolean fullName, int maxCount) { + return getRefs(r, Constants.R_HEADS, fullName, maxCount); } - public static List<RefModel> getRemoteBranches(Repository r, int maxCount) { - return getRefs(r, Constants.R_REMOTES, maxCount); + public static List<RefModel> getRemoteBranches(Repository r, boolean fullName, int maxCount) { + return getRefs(r, Constants.R_REMOTES, fullName, maxCount); } - public static List<RefModel> getNotesRefs(Repository r, int maxCount) { - return getRefs(r, Constants.R_NOTES, maxCount); + public static List<RefModel> getNotesRefs(Repository r, boolean fullName, int maxCount) { + return getRefs(r, Constants.R_NOTES, fullName, maxCount); } - private static List<RefModel> getRefs(Repository r, String refs, int maxCount) { + private static List<RefModel> getRefs(Repository r, String refs, boolean fullName, int maxCount) { List<RefModel> list = new ArrayList<RefModel>(); try { Map<String, Ref> map = r.getRefDatabase().getRefs(refs); @@ -637,7 +637,11 @@ for (Entry<String, Ref> entry : map.entrySet()) { Ref ref = entry.getValue(); RevObject object = rw.parseAny(ref.getObjectId()); - list.add(new RefModel(entry.getKey(), ref, object)); + String name = entry.getKey(); + if (fullName && !StringUtils.isEmpty(refs)) { + name = refs + name; + } + list.add(new RefModel(name, ref, object)); } rw.dispose(); Collections.sort(list); @@ -653,7 +657,7 @@ public static List<GitNote> getNotesOnCommit(Repository repository, RevCommit commit) { List<GitNote> list = new ArrayList<GitNote>(); - List<RefModel> notesRefs = getNotesRefs(repository, -1); + List<RefModel> notesRefs = getNotesRefs(repository, true, -1); for (RefModel notesRef : notesRefs) { RevTree notesTree = JGitUtils.getCommit(repository, notesRef.getName()).getTree(); StringBuilder sb = new StringBuilder(commit.getName()); diff --git a/src/com/gitblit/utils/MetricUtils.java b/src/com/gitblit/utils/MetricUtils.java index d963bf5..d8286e2 100644 --- a/src/com/gitblit/utils/MetricUtils.java +++ b/src/com/gitblit/utils/MetricUtils.java @@ -44,7 +44,7 @@ final Map<String, Metric> metricMap = new HashMap<String, Metric>(); if (JGitUtils.hasCommits(r)) { - final List<RefModel> tags = JGitUtils.getTags(r, -1); + final List<RefModel> tags = JGitUtils.getTags(r, true, -1); final Map<ObjectId, RefModel> tagMap = new HashMap<ObjectId, RefModel>(); for (RefModel tag : tags) { tagMap.put(tag.getReferencedObjectId(), tag); @@ -122,14 +122,14 @@ for (RevCommit rev : revlog) { String p; if (byEmail) { - p = rev.getAuthorIdent().getEmailAddress(); + p = rev.getAuthorIdent().getEmailAddress().toLowerCase(); if (StringUtils.isEmpty(p)) { - p = rev.getAuthorIdent().getName(); + p = rev.getAuthorIdent().getName().toLowerCase(); } } else { - p = rev.getAuthorIdent().getName(); + p = rev.getAuthorIdent().getName().toLowerCase(); if (StringUtils.isEmpty(p)) { - p = rev.getAuthorIdent().getEmailAddress(); + p = rev.getAuthorIdent().getEmailAddress().toLowerCase(); } } if (!metricMap.containsKey(p)) { diff --git a/src/com/gitblit/utils/TicgitUtils.java b/src/com/gitblit/utils/TicgitUtils.java index 8224d1c..48e8558 100644 --- a/src/com/gitblit/utils/TicgitUtils.java +++ b/src/com/gitblit/utils/TicgitUtils.java @@ -38,7 +38,7 @@ RefModel ticgitBranch = null; try { // search for ticgit branch in local heads - for (RefModel ref : JGitUtils.getLocalBranches(r, -1)) { + for (RefModel ref : JGitUtils.getLocalBranches(r, false, -1)) { if (ref.displayName.endsWith("ticgit")) { ticgitBranch = ref; break; @@ -47,7 +47,7 @@ // search for ticgit branch in remote heads if (ticgitBranch == null) { - for (RefModel ref : JGitUtils.getRemoteBranches(r, -1)) { + for (RefModel ref : JGitUtils.getRemoteBranches(r, false, -1)) { if (ref.displayName.endsWith("ticgit")) { ticgitBranch = ref; break; diff --git a/src/com/gitblit/wicket/pages/TagPage.java b/src/com/gitblit/wicket/pages/TagPage.java index 71a8645..c1efb89 100644 --- a/src/com/gitblit/wicket/pages/TagPage.java +++ b/src/com/gitblit/wicket/pages/TagPage.java @@ -39,7 +39,7 @@ Repository r = getRepository(); // Find tag in repository - List<RefModel> tags = JGitUtils.getTags(r, -1); + List<RefModel> tags = JGitUtils.getTags(r, true, -1); RefModel tagRef = null; for (RefModel tag : tags) { if (tag.getName().equals(objectId) || tag.getObjectId().getName().equals(objectId)) { diff --git a/src/com/gitblit/wicket/panels/BranchesPanel.java b/src/com/gitblit/wicket/panels/BranchesPanel.java index d50db88..82f8a04 100644 --- a/src/com/gitblit/wicket/panels/BranchesPanel.java +++ b/src/com/gitblit/wicket/panels/BranchesPanel.java @@ -48,9 +48,9 @@ // branches List<RefModel> branches = new ArrayList<RefModel>(); - branches.addAll(JGitUtils.getLocalBranches(r, maxCount)); + branches.addAll(JGitUtils.getLocalBranches(r, false, maxCount)); if (model.showRemoteBranches) { - branches.addAll(JGitUtils.getRemoteBranches(r, maxCount)); + branches.addAll(JGitUtils.getRemoteBranches(r, false, maxCount)); } Collections.sort(branches); Collections.reverse(branches); diff --git a/src/com/gitblit/wicket/panels/RefsPanel.java b/src/com/gitblit/wicket/panels/RefsPanel.java index 266a49b..8cf137b 100644 --- a/src/com/gitblit/wicket/panels/RefsPanel.java +++ b/src/com/gitblit/wicket/panels/RefsPanel.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; @@ -33,6 +34,7 @@ import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.pages.CommitPage; import com.gitblit.wicket.pages.LogPage; +import com.gitblit.wicket.pages.RepositoryPage; import com.gitblit.wicket.pages.TagPage; public class RefsPanel extends Panel { @@ -49,8 +51,12 @@ if (refs == null) { refs = new ArrayList<RefModel>(); } - Collections.sort(refs); - // refNames.remove(Constants.HEAD); + Collections.sort(refs, new Comparator<RefModel>() { + @Override + public int compare(RefModel o1, RefModel o2) { + return o1.displayName.compareTo(o2.displayName); + } + }); ListDataProvider<RefModel> refsDp = new ListDataProvider<RefModel>(refs); DataView<RefModel> refsView = new DataView<RefModel>("ref", refsDp) { @@ -60,34 +66,42 @@ RefModel entry = item.getModelObject(); String name = entry.displayName; String objectid = entry.getReferencedObjectId().getName(); - Component c = null; + + Class<? extends RepositoryPage> linkClass = CommitPage.class; + String cssClass = ""; if (name.startsWith(Constants.R_HEADS)) { // local head - c = new LinkPanel("refName", null, name.substring(Constants.R_HEADS.length()), - LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectid)); - WicketUtils.setCssClass(c, "headRef"); + linkClass = LogPage.class; + name = name.substring(Constants.R_HEADS.length()); + cssClass = "headRef"; } else if (name.equals(Constants.HEAD)) { // local head - c = new LinkPanel("refName", null, name, LogPage.class, - WicketUtils.newObjectParameter(repositoryName, objectid)); - WicketUtils.setCssClass(c, "headRef"); + linkClass = LogPage.class; + cssClass = "headRef"; } else if (name.startsWith(Constants.R_REMOTES)) { // remote head - c = new LinkPanel("refName", null, - name.substring(Constants.R_REMOTES.length()), LogPage.class, - WicketUtils.newObjectParameter(repositoryName, objectid)); - WicketUtils.setCssClass(c, "remoteRef"); + linkClass = LogPage.class; + name = name.substring(Constants.R_REMOTES.length()); + cssClass = "remoteRef"; } else if (name.startsWith(Constants.R_TAGS)) { // tag - c = new LinkPanel("refName", null, name.substring(Constants.R_TAGS.length()), - TagPage.class, WicketUtils.newObjectParameter(repositoryName, objectid)); - WicketUtils.setCssClass(c, "tagRef"); - } else { - // other - c = new LinkPanel("refName", null, name, CommitPage.class, - WicketUtils.newObjectParameter(repositoryName, objectid)); - WicketUtils.setCssClass(c, "otherRef"); + if (entry.isAnnotatedTag()) { + linkClass = TagPage.class; + objectid = entry.getObjectId().getName(); + } else { + linkClass = CommitPage.class; + objectid = entry.getReferencedObjectId().getName(); + } + name = name.substring(Constants.R_TAGS.length()); + cssClass = "tagRef"; + } else if (name.startsWith(Constants.R_NOTES)) { + linkClass = CommitPage.class; + cssClass = "otherRef"; } + + Component c = new LinkPanel("refName", null, name, linkClass, + WicketUtils.newObjectParameter(repositoryName, objectid)); + WicketUtils.setCssClass(c, cssClass); WicketUtils.setHtmlTooltip(c, name); item.add(c); } diff --git a/src/com/gitblit/wicket/panels/TagsPanel.java b/src/com/gitblit/wicket/panels/TagsPanel.java index 259af31..f6dd762 100644 --- a/src/com/gitblit/wicket/panels/TagsPanel.java +++ b/src/com/gitblit/wicket/panels/TagsPanel.java @@ -49,7 +49,7 @@ super(wicketId); // header - List<RefModel> tags = JGitUtils.getTags(r, maxCount); + List<RefModel> tags = JGitUtils.getTags(r, false, maxCount); if (maxCount > 0) { // summary page // show tags page link diff --git a/tests/com/gitblit/tests/JGitUtilsTest.java b/tests/com/gitblit/tests/JGitUtilsTest.java index 7196afd..6646bf8 100644 --- a/tests/com/gitblit/tests/JGitUtilsTest.java +++ b/tests/com/gitblit/tests/JGitUtilsTest.java @@ -139,7 +139,7 @@ public void testBranches() throws Exception { Repository repository = GitBlitSuite.getTicgitRepository(); - for (RefModel model : JGitUtils.getLocalBranches(repository, -1)) { + for (RefModel model : JGitUtils.getLocalBranches(repository, true, -1)) { assertTrue(model.getName().startsWith(Constants.R_HEADS)); assertTrue(model.equals(model)); assertFalse(model.equals("")); @@ -147,7 +147,7 @@ + model.getName().hashCode()); assertTrue(model.getShortMessage().equals(model.getShortMessage())); } - for (RefModel model : JGitUtils.getRemoteBranches(repository, -1)) { + for (RefModel model : JGitUtils.getRemoteBranches(repository, true, -1)) { assertTrue(model.getName().startsWith(Constants.R_REMOTES)); assertTrue(model.equals(model)); assertFalse(model.equals("")); @@ -155,13 +155,13 @@ + model.getName().hashCode()); assertTrue(model.getShortMessage().equals(model.getShortMessage())); } - assertTrue(JGitUtils.getRemoteBranches(repository, 10).size() == 10); + assertTrue(JGitUtils.getRemoteBranches(repository, true, 10).size() == 10); repository.close(); } public void testTags() throws Exception { Repository repository = GitBlitSuite.getTicgitRepository(); - for (RefModel model : JGitUtils.getTags(repository, -1)) { + for (RefModel model : JGitUtils.getTags(repository, true, -1)) { if (model.getObjectId().getName().equals("283035e4848054ff1803cb0e690270787dc92399")) { assertTrue("Not an annotated tag!", model.isAnnotatedTag()); } @@ -174,7 +174,7 @@ repository.close(); repository = GitBlitSuite.getBluezGnomeRepository(); - for (RefModel model : JGitUtils.getTags(repository, -1)) { + for (RefModel model : JGitUtils.getTags(repository, true, -1)) { if (model.getObjectId().getName().equals("728643ec0c438c77e182898c2f2967dbfdc231c8")) { assertFalse(model.isAnnotatedTag()); assertTrue(model.getAuthorIdent().getEmailAddress().equals("marcel@holtmann.org")); -- Gitblit v1.9.1