James Moger
2011-04-11 ef5c58d12ff33e4f2b83b6dcd53bdb6c96a6150d
Page log.
16 files modified
243 ■■■■■ changed files
src/com/gitblit/utils/JGitUtils.java 44 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.java 18 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.properties 5 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/RepositoryPage.java 14 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/WicketUtils.java 21 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/BlobPage.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/DiffPage.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/LogPage.html 10 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/LogPage.java 19 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoriesPage.java 5 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.java 27 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/TagPage.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/TreePage.java 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/BranchesPanel.java 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/LogPanel.java 46 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TagsPanel.java 12 ●●●● patch | view | raw | blame | history
src/com/gitblit/utils/JGitUtils.java
@@ -16,7 +16,6 @@
import java.util.Map;
import java.util.Set;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.diff.DiffFormatter;
import org.eclipse.jgit.diff.RawTextComparator;
@@ -286,7 +285,7 @@
    public static String getCommitDiff(Repository r, RevCommit commit, boolean outputHtml) {
        return getCommitDiff(r, commit, null, outputHtml);
    }
    public static String getCommitDiff(Repository r, RevCommit commit, String path, boolean outputHtml) {
        try {
            final RevWalk rw = new RevWalk(r);
@@ -380,16 +379,39 @@
    }
    public static List<RevCommit> getRevLog(Repository r, int maxCount) {
        return getRevLog(r, Constants.HEAD, 0, maxCount);
    }
    public static List<RevCommit> getRevLog(Repository r, String objectId, int offset, int maxCount) {
        List<RevCommit> list = new ArrayList<RevCommit>();
        try {
            Git git = new Git(r);
            Iterable<RevCommit> revlog = git.log().call();
            for (RevCommit rev : revlog) {
                list.add(rev);
                if (maxCount > 0 && list.size() == maxCount) {
                    break;
            if (objectId == null || objectId.trim().length() == 0) {
                objectId = Constants.HEAD;
            }
            RevWalk walk = new RevWalk(r);
            ObjectId object = r.resolve(objectId);
            walk.markStart(walk.parseCommit(object));
            Iterable<RevCommit> revlog = walk;
            if (offset > 0) {
                int count = 0;
                for (RevCommit rev : revlog) {
                    count++;
                    if (count > offset) {
                        list.add(rev);
                        if (maxCount > 0 && list.size() == maxCount) {
                            break;
                        }
                    }
                }
            } else {
                for (RevCommit rev : revlog) {
                    list.add(rev);
                    if (maxCount > 0 && list.size() == maxCount) {
                        break;
                    }
                }
            }
            walk.dispose();
        } catch (Throwable t) {
            LOGGER.error("Failed to determine last change", t);
        }
@@ -504,8 +526,10 @@
        final Map<String, Metric> map = new HashMap<String, Metric>();
        try {
            DateFormat df = new SimpleDateFormat("yyyy-MM");
            Git git = new Git(r);
            Iterable<RevCommit> revlog = git.log().call();
            RevWalk walk = new RevWalk(r);
            ObjectId object = r.resolve(Constants.HEAD);
            walk.markStart(walk.parseCommit(object));
            Iterable<RevCommit> revlog = walk;
            for (RevCommit rev : revlog) {
                Date d = getCommitDate(rev);
                String p = df.format(d);
src/com/gitblit/wicket/GitBlitWebApp.java
@@ -62,15 +62,15 @@
        getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
        // setup the standard gitweb-ish urls
        mount(new MixedParamUrlCodingStrategy("/summary", SummaryPage.class, new String[] { "p" }));
        mount(new MixedParamUrlCodingStrategy("/shortlog", LogPage.class, new String[] { "p", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tags", TagsPage.class, new String[] { "p" }));
        mount(new MixedParamUrlCodingStrategy("/branches", BranchesPage.class, new String[] { "p" }));
        mount(new MixedParamUrlCodingStrategy("/commit", CommitPage.class, new String[] { "p", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tag", TagPage.class, new String[] { "p", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tree", TreePage.class, new String[] { "p", "h", "f" }));
        mount(new MixedParamUrlCodingStrategy("/blob", BlobPage.class, new String[] { "p", "h", "f" }));
        mount(new MixedParamUrlCodingStrategy("/diff", DiffPage.class, new String[] { "p", "h", "f" }));
        mount(new MixedParamUrlCodingStrategy("/summary", SummaryPage.class, new String[] { "r" }));
        mount(new MixedParamUrlCodingStrategy("/log", LogPage.class, new String[] { "r", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tags", TagsPage.class, new String[] { "r" }));
        mount(new MixedParamUrlCodingStrategy("/branches", BranchesPage.class, new String[] { "r" }));
        mount(new MixedParamUrlCodingStrategy("/commit", CommitPage.class, new String[] { "r", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tag", TagPage.class, new String[] { "r", "h" }));
        mount(new MixedParamUrlCodingStrategy("/tree", TreePage.class, new String[] { "r", "h", "f" }));
        mount(new MixedParamUrlCodingStrategy("/blob", BlobPage.class, new String[] { "r", "h", "f" }));
        mount(new MixedParamUrlCodingStrategy("/diff", DiffPage.class, new String[] { "r", "h", "f" }));
        
        // setup extended urls
        mount(new MixedParamUrlCodingStrategy("/ticgit", TicGitPage.class, new String[] { "p" }));
src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -34,4 +34,7 @@
gb.newRepository = new repository
gb.newUser = new user
gb.commitdiff = commitdiff
gb.ticgit = ticgit
gb.ticgit = ticgit
gb.pageFirst = first
gb.pagePrevious prev
gb.pageNext = next
src/com/gitblit/wicket/RepositoryPage.java
@@ -21,19 +21,19 @@
public abstract class RepositoryPage extends BasePage {
    protected final String repositoryName;
    protected final String commitId;
    protected final String objectId;
    protected String description;
    private transient Repository r = null;
    public RepositoryPage(PageParameters params) {
        super(params);
        if (!params.containsKey("p")) {
        if (!params.containsKey("r")) {
            error("Repository not specified!");
            redirectToInterceptPage(new RepositoriesPage());
        }
        repositoryName = params.getString("p", "");
        commitId = params.getString("h", "HEAD");
        repositoryName = params.getString("r", "");
        objectId = params.getString("h", "HEAD");
        Repository r = getRepository();
@@ -116,14 +116,14 @@
    }
    protected PageParameters newCommitParameter() {
        return WicketUtils.newCommitParameter(repositoryName, commitId);
        return WicketUtils.newObjectParameter(repositoryName, objectId);
    }
    protected PageParameters newCommitParameter(String commitId) {
        return WicketUtils.newCommitParameter(repositoryName, commitId);
        return WicketUtils.newObjectParameter(repositoryName, commitId);
    }
    protected PageParameters newPathParameter(String path) {
        return WicketUtils.newPathParameter(repositoryName, commitId, path);
        return WicketUtils.newPathParameter(repositoryName, objectId, path);
    }
}
src/com/gitblit/wicket/WicketUtils.java
@@ -79,21 +79,28 @@
    }
    
    public static PageParameters newRepositoryParameter(String repositoryName) {
        return new PageParameters("p=" + repositoryName);
        return new PageParameters("r=" + repositoryName);
    }
    public static PageParameters newCommitParameter(String repositoryName, String commitId) {
        if (commitId == null || commitId.trim().length() == 0) {
    public static PageParameters newObjectParameter(String repositoryName, String objectId) {
        if (objectId == null || objectId.trim().length() == 0) {
            return newRepositoryParameter(repositoryName);
        }
        return new PageParameters("p=" + repositoryName + ",h=" + commitId);
        return new PageParameters("r=" + repositoryName + ",h=" + objectId);
    }
    public static PageParameters newPathParameter(String repositoryName, String commitId, String path) {
    public static PageParameters newPathParameter(String repositoryName, String objectId, String path) {
        if (path == null || path.trim().length() == 0) {
            return newCommitParameter(repositoryName, commitId);
            return newObjectParameter(repositoryName, objectId);
        }
        return new PageParameters("p=" + repositoryName + ",h=" + commitId + ",f=" + path);
        return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path);
    }
    public static PageParameters newLogPageParameter(String repositoryName, String objectId, int pageNumber) {
        if (pageNumber <= 1) {
            return newObjectParameter(repositoryName, objectId);
        }
        return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",page=" + pageNumber);
    }
    
    public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone) {
src/com/gitblit/wicket/pages/BlobPage.java
@@ -25,7 +25,7 @@
        final String blobPath = params.getString("f", null);
        Repository r = getRepository();
        RevCommit commit = JGitUtils.getCommit(r, commitId);
        RevCommit commit = JGitUtils.getCommit(r, objectId);
        // blob page links
        add(new Label("historyLink", getString("gb.history")));
@@ -34,7 +34,7 @@
        add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, commitId));
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
        String extension = null;
        if (blobPath.lastIndexOf('.') > -1) {
            extension = blobPath.substring(blobPath.lastIndexOf('.') + 1);
src/com/gitblit/wicket/pages/DiffPage.java
@@ -18,7 +18,7 @@
        final String blobPath = params.getString("f", null);
        Repository r = getRepository();
        RevCommit commit = JGitUtils.getCommit(r, commitId);
        RevCommit commit = JGitUtils.getCommit(r, objectId);
        String diff;
        if (blobPath != null && blobPath.length() > 0) {
            // blob diff
@@ -35,7 +35,7 @@
        add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, commitId));
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
        add(new Label("diffText", diff).setEscapeModelStrings(false));
    }
src/com/gitblit/wicket/pages/LogPage.html
@@ -10,8 +10,18 @@
    <!-- page nav links -->    
    <div wicket:id="pageLinks">[page links]</div>
    <!-- pager links -->
    <div style="padding-top:5px;padding-bottom:5px;">
        <a wicket:id="firstPageTop"><wicket:message key="gb.pageFirst"></wicket:message></a> | <a wicket:id="prevPageTop"><wicket:message key="gb.pagePrevious"></wicket:message></a> | <a wicket:id="nextPageTop"><wicket:message key="gb.pageNext"></wicket:message></a>
    </div>
    <!-- log -->
    <div style="margin-top:5px;" wicket:id="logPanel">[log panel]</div>
    <!-- pager links -->
    <div style="padding-bottom:5px;">
        <a wicket:id="firstPageBottom"><wicket:message key="gb.pageFirst"></wicket:message></a> | <a wicket:id="prevPageBottom"><wicket:message key="gb.pagePrevious"></wicket:message></a> | <a wicket:id="nextPageBottom"><wicket:message key="gb.pageNext"></wicket:message></a>
    </div>
    
</wicket:extend>
</body>
src/com/gitblit/wicket/pages/LogPage.java
@@ -1,19 +1,32 @@
package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.LogPanel;
public class LogPage extends RepositoryPage {
    public LogPage(PageParameters params) {
        super(params);
        add(new LogPanel("logPanel", repositoryName, getRepository(), 100, true));
        int pageNumber = params.getInt("page", 1); // index from 1
        int prevPage = Math.max(0, pageNumber - 1);
        int nextPage = pageNumber + 1;
        add(new BookmarkablePageLink<Void>("firstPageTop", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new BookmarkablePageLink<Void>("prevPageTop", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, prevPage)).setEnabled(pageNumber > 1));
        add(new BookmarkablePageLink<Void>("nextPageTop", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)));
        add(new LogPanel("logPanel", repositoryName, objectId, getRepository(), -1, pageNumber - 1));
        add(new BookmarkablePageLink<Void>("firstPageBottom", LogPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new BookmarkablePageLink<Void>("prevPageBottom", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, prevPage)).setEnabled(pageNumber > 1));
        add(new BookmarkablePageLink<Void>("nextPageBottom", LogPage.class, WicketUtils.newLogPageParameter(repositoryName, objectId, nextPage)));
    }
    @Override
    protected String getPageName() {
        return getString("gb.log");
src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -43,7 +43,7 @@
            public void populateItem(final Item<RepositoryModel> item) {
                final RepositoryModel entry = item.getModelObject();
                PageParameters pp = new PageParameters("p=" + entry.name);
                PageParameters pp = WicketUtils.newRepositoryParameter(entry.name);
                item.add(new LinkPanel("repositoryName", "list", entry.name, SummaryPage.class, pp));
                item.add(new LinkPanel("repositoryDescription", "list", entry.description, SummaryPage.class, pp));
                item.add(new Label("repositoryOwner", entry.owner));
@@ -53,8 +53,7 @@
                item.add(lastChangeLabel);
                WicketUtils.setCssClass(lastChangeLabel, Utils.timeAgoCss(entry.lastChange));
                String clazz = counter % 2 == 0 ? "dark" : "light";
                WicketUtils.setCssClass(item, clazz);
                WicketUtils.setAlternatingBackground(item, counter);
                counter++;
            }
        };
src/com/gitblit/wicket/pages/SummaryPage.java
@@ -44,6 +44,12 @@
        }
        
        Repository r = getRepository();        
        List<Metric> metrics = JGitUtils.getDateMetrics(r);
        long numberOfCommits = 0;
        for (Metric m : metrics) {
            numberOfCommits += m.count;
        }
        String owner = JGitUtils.getRepositoryOwner(r);
        GitBlitWebSession session = GitBlitWebSession.get();
@@ -56,12 +62,12 @@
        add(new Label("repositoryLastChange", lastchange));
        add(new Label("repositoryCloneUrl", cloneurl));
        add(new LogPanel("commitsPanel", repositoryName, r, numberCommits, false));
        add(new LogPanel("commitsPanel", repositoryName, null, r, numberCommits, 0));
        add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs));
        add(new BranchesPanel("branchesPanel", repositoryName, r, numberRefs));
        
        // Display an activity line graph
        insertActivityGraph(r);
        insertActivityGraph(metrics);
    }
    
    @Override
@@ -69,18 +75,17 @@
        return getString("gb.summary");
    }
    private void insertActivityGraph(Repository r) {
        if (StoredSettings.getBoolean("generateActivityGraph", true)) {
            List<Metric> dates = JGitUtils.getDateMetrics(r);
            IChartData data = getChartData(dates);
    private void insertActivityGraph(List<Metric> metrics) {
        if (StoredSettings.getBoolean("generateActivityGraph", true)) {
            IChartData data = getChartData(metrics);
            ChartProvider provider = new ChartProvider(new Dimension(400, 80), ChartType.LINE, data);
            ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM);
            dateAxis.setLabels(new String[] { dates.get(0).name, dates.get(dates.size() / 2).name, dates.get(dates.size() - 1).name });
            dateAxis.setLabels(new String[] { metrics.get(0).name, metrics.get(metrics.size() / 2).name, metrics.get(metrics.size() - 1).name });
            provider.addAxis(dateAxis);
            ChartAxis commitAxis = new ChartAxis(ChartAxisType.LEFT);
            commitAxis.setLabels(new String[] { "", String.valueOf((int) maxValue(dates)) });
            commitAxis.setLabels(new String[] { "", String.valueOf((int) maxValue(metrics)) });
            provider.addAxis(commitAxis);
            add(new Chart("commitsChart", provider));
@@ -89,11 +94,11 @@
        }
    }
    protected IChartData getChartData(List<Metric> results) {
        final double[] counts = new double[results.size()];
    protected IChartData getChartData(List<Metric> metrics) {
        final double[] counts = new double[metrics.size()];
        int i = 0;
        double max = 0;
        for (Metric m : results) {
        for (Metric m : metrics) {
            counts[i++] = m.count;
            max = Math.max(max, m.count);
        }
src/com/gitblit/wicket/pages/TagPage.java
@@ -17,7 +17,7 @@
        super(params);
        Repository r = getRepository();
        RevCommit c = JGitUtils.getCommit(r, commitId);
        RevCommit c = JGitUtils.getCommit(r, objectId);
        add(new LinkPanel("commit", "title", c.getName(), CommitPage.class, newCommitParameter()));
src/com/gitblit/wicket/pages/TreePage.java
@@ -29,7 +29,7 @@
        final String basePath = params.getString("f", null);
        Repository r = getRepository();
        RevCommit commit = JGitUtils.getCommit(r, commitId);
        RevCommit commit = JGitUtils.getCommit(r, objectId);
        List<PathModel> paths = JGitUtils.getFilesInPath(r, basePath, commit);
        // tree page links
@@ -39,9 +39,9 @@
        add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
        // breadcrumbs
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, basePath, commitId));
        add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, basePath, objectId));
        if (basePath != null && basePath.trim().length() > 0) {
            paths.add(0, PathModel.getParentPath(basePath, commitId));
            paths.add(0, PathModel.getParentPath(basePath, objectId));
        }
        final ByteFormat byteFormat = new ByteFormat();
src/com/gitblit/wicket/panels/BranchesPanel.java
@@ -61,14 +61,14 @@
                item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), GitBlitWebSession.get().getTimezone()));
                item.add(new LinkPanel("branchName", "list name", WicketUtils.trimString(entry.getDisplayName(), 28), LogPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new LinkPanel("branchName", "list name", WicketUtils.trimString(entry.getDisplayName(), 28), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                
                // only show branch type on the branches page
                boolean remote = entry.getName().startsWith(Constants.R_REMOTES);
                item.add(new Label("branchType", remote ? getString("gb.remote"):getString("gb.local")).setVisible(maxCount <= 0));
                
                item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                WicketUtils.setAlternatingBackground(item, counter);
                counter++;
src/com/gitblit/wicket/panels/LogPanel.java
@@ -4,9 +4,9 @@
import java.util.List;
import java.util.Map;
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
@@ -31,17 +31,26 @@
    private static final long serialVersionUID = 1L;
    public LogPanel(String wicketId, final String repositoryName, Repository r, int maxCount, boolean showPager) {
    public LogPanel(String wicketId, final String repositoryName, String objectId, Repository r, int limit, int pageOffset) {
        super(wicketId);
        boolean pageResults = limit <= 0;
        setOutputMarkupId(pageResults);
        final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r);
        List<RevCommit> commits = JGitUtils.getRevLog(r, maxCount);
        List<RevCommit> commits;
        if (pageResults) {
            // Paging result set
            commits = JGitUtils.getRevLog(r, objectId, pageOffset*GitBlitWebApp.PAGING_ITEM_COUNT, GitBlitWebApp.PAGING_ITEM_COUNT);
        } else {
            // Fixed size result set
            commits = JGitUtils.getRevLog(r, objectId, 0, limit);
        }
        // header
        if (showPager) {
        if (pageResults) {
            // shortlog page
            // show repository summary page link
            add(new LinkPanel("header", "title", repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
            add(new LinkPanel("header", "title", repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
        } else {
            // summary page
            // show shortlog page link
@@ -64,7 +73,7 @@
                String shortMessage = entry.getShortMessage();
                String trimmedMessage = WicketUtils.trimShortLog(shortMessage);
                LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName()));
                LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
                if (!shortMessage.equals(trimmedMessage)) {
                    WicketUtils.setHtmlTitle(shortlog, shortMessage);
                }
@@ -72,32 +81,29 @@
                item.add(new RefsPanel("commitRefs", entry, allRefs));
                item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("diff", DiffPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("diff", DiffPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                WicketUtils.setAlternatingBackground(item, counter);
                counter++;
            }
        };
        add(logView);
        add(logView);
        // determine to show pager, more, or neither
        if (maxCount <= 0) {
        if (limit <= 0) {
            // no display limit
            add(new Label("moreLogs", "").setVisible(false));
            add(new Label("pageLogs", "").setVisible(false));
        } else {
            if (commits.size() == maxCount) {
            }
            if (showPager) {
        } else {
            if (pageResults) {
                // paging
                add(new Label("moreLogs", "").setVisible(false));
                if (commits.size() == maxCount) {
                if (commits.size() == limit) {
                    // show pager
                    logView.setItemsPerPage(GitBlitWebApp.PAGING_ITEM_COUNT);
                    add(new PagingNavigator("pageLogs", logView));
                    add(new AjaxPagingNavigator("pageLogs", logView));
                } else {
                    // nothing to page
                    add(new Label("pageLogs", "").setVisible(false));
@@ -105,7 +111,7 @@
            } else {
                // more
                add(new Label("pageLogs", "").setVisible(false));
                if (commits.size() == maxCount) {
                if (commits.size() == limit) {
                    // show more
                    add(new LinkPanel("moreLogs", "link", new StringResourceModel("gb.moreLogs", this, null), LogPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
                } else {
src/com/gitblit/wicket/panels/TagsPanel.java
@@ -51,7 +51,7 @@
                item.add(WicketUtils.createDateLabel("tagDate", entry.getDate(), GitBlitWebSession.get().getTimezone()));
                item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getCommitId().getName())));
                item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName())));
                String message;
                if (maxCount > 0) {
                    message = WicketUtils.trimString(entry.getShortLog(), 40);
@@ -59,13 +59,13 @@
                    message = entry.getShortLog();
                }
                if (entry.isAnnotatedTag()) {
                    item.add(new LinkPanel("tagDescription", "list subject", message, TagPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getObjectId().getName())));
                    item.add(new LinkPanel("tagDescription", "list subject", message, TagPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName())));
                } else {
                    item.add(new LinkPanel("tagDescription", "list subject", message, CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getObjectId().getName())));
                    item.add(new LinkPanel("tagDescription", "list subject", message, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName())));
                }
                item.add(new BookmarkablePageLink<Void>("view", TagPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getObjectId().getName())).setEnabled(entry.isAnnotatedTag()));
                item.add(new BookmarkablePageLink<Void>("commit", CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getCommitId().getName())));
                item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
                item.add(new BookmarkablePageLink<Void>("view", TagPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName())).setEnabled(entry.isAnnotatedTag()));
                item.add(new BookmarkablePageLink<Void>("commit", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName())));
                item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                WicketUtils.setAlternatingBackground(item, counter);
                counter++;