Fixed refs linking problem. Author metrics are lowercase.
| | |
| | | ## 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
|
| | |
| | | }
|
| | |
|
| | | 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();
|
| | |
| | | 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);
|
| | |
| | | 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);
|
| | |
| | |
|
| | | 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());
|
| | |
| | | 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);
|
| | |
| | | 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)) {
|
| | |
| | | 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;
|
| | |
| | |
|
| | | // 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;
|
| | |
| | | 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)) {
|
| | |
| | |
|
| | | // 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);
|
| | |
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.Collections;
|
| | | import java.util.Comparator;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | |
| | | 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 {
|
| | |
| | | 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) {
|
| | |
| | | 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");
|
| | | if (entry.isAnnotatedTag()) {
|
| | | linkClass = TagPage.class;
|
| | | objectid = entry.getObjectId().getName();
|
| | | } else {
|
| | | // other
|
| | | c = new LinkPanel("refName", null, name, CommitPage.class,
|
| | | WicketUtils.newObjectParameter(repositoryName, objectid));
|
| | | WicketUtils.setCssClass(c, "otherRef");
|
| | | 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);
|
| | | }
|
| | |
| | | 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
|
| | |
| | |
|
| | | 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(""));
|
| | |
| | | + 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(""));
|
| | |
| | | + 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());
|
| | | }
|
| | |
| | | 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"));
|