From 30f9d25d77ccb5cd978d4cf8fa389ec819e90e95 Mon Sep 17 00:00:00 2001 From: Philip L. McMahon <philip.l.mcmahon@gmail.com> Date: Fri, 27 Jan 2012 02:02:19 -0500 Subject: [PATCH] Correct update of HEAD symbolic reference when target is a tag. --- src/com/gitblit/wicket/pages/RepositoryPage.java | 63 +++++++++++++++++++------------ 1 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java index 272a3f5..5f54401 100644 --- a/src/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/com/gitblit/wicket/pages/RepositoryPage.java @@ -38,16 +38,18 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; +import com.gitblit.Constants; import com.gitblit.GitBlit; import com.gitblit.Keys; +import com.gitblit.PagesServlet; import com.gitblit.SyndicationServlet; import com.gitblit.models.RepositoryModel; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.JGitUtils.SearchType; import com.gitblit.utils.StringUtils; import com.gitblit.utils.TicgitUtils; import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.PageRegistration; +import com.gitblit.wicket.PageRegistration.OtherPageLink; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.LinkPanel; import com.gitblit.wicket.panels.NavigationPanel; @@ -71,6 +73,10 @@ if (StringUtils.isEmpty(repositoryName)) { error(MessageFormat.format("Repository not specified for {0}!", getPageName()), true); + } + + if (!getRepositoryModel().hasCommits) { + setResponsePage(EmptyRepositoryPage.class, params); } // register the available page links for this page and user @@ -119,6 +125,12 @@ if (model.useDocs) { pages.put("docs", new PageRegistration("gb.docs", DocsPage.class, params)); } + if (JGitUtils.getPagesBranch(r) != null) { + OtherPageLink pagesLink = new OtherPageLink("gb.pages", PagesServlet.asLink( + getRequest().getRelativePathPrefixToContextRoot(), repositoryName, null)); + pages.put("pages", pagesLink); + } + // Conditionally add edit link final boolean showAdmin; if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) { @@ -138,8 +150,8 @@ @Override protected void setupPage(String repositoryName, String pageName) { - add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, - WicketUtils.newRepositoryParameter(repositoryName))); + add(new LinkPanel("repositoryName", null, StringUtils.stripDotGit(repositoryName), + SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName))); add(new Label("pageName", pageName)); super.setupPage(repositoryName, pageName); @@ -206,14 +218,15 @@ protected abstract String getPageName(); protected Component createPersonPanel(String wicketId, PersonIdent identity, - SearchType searchType) { + Constants.SearchType searchType) { + String name = identity == null ? "" : identity.getName(); + String address = identity == null ? "" : identity.getEmailAddress(); boolean showEmail = GitBlit.getBoolean(Keys.web.showEmailAddresses, false); - if (!showEmail || StringUtils.isEmpty(identity.getName()) - || StringUtils.isEmpty(identity.getEmailAddress())) { - String value = identity.getName(); + if (!showEmail || StringUtils.isEmpty(name) || StringUtils.isEmpty(address)) { + String value = name; if (StringUtils.isEmpty(value)) { if (showEmail) { - value = identity.getEmailAddress(); + value = address; } else { value = getString("gb.missingUsername"); } @@ -226,26 +239,25 @@ return partial; } else { Fragment fullPerson = new Fragment(wicketId, "fullPersonIdent", this); - LinkPanel nameLink = new LinkPanel("personName", "list", identity.getName(), - SearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId, - identity.getName(), searchType)); - setPersonSearchTooltip(nameLink, identity.getName(), searchType); + LinkPanel nameLink = new LinkPanel("personName", "list", name, SearchPage.class, + WicketUtils.newSearchParameter(repositoryName, objectId, name, searchType)); + setPersonSearchTooltip(nameLink, name, searchType); fullPerson.add(nameLink); - LinkPanel addressLink = new LinkPanel("personAddress", "list", "<" - + identity.getEmailAddress() + ">", SearchPage.class, - WicketUtils.newSearchParameter(repositoryName, objectId, - identity.getEmailAddress(), searchType)); - setPersonSearchTooltip(addressLink, identity.getEmailAddress(), searchType); + LinkPanel addressLink = new LinkPanel("personAddress", "list", "<" + address + ">", + SearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId, + address, searchType)); + setPersonSearchTooltip(addressLink, address, searchType); fullPerson.add(addressLink); return fullPerson; } } - protected void setPersonSearchTooltip(Component component, String value, SearchType searchType) { - if (searchType.equals(SearchType.AUTHOR)) { + protected void setPersonSearchTooltip(Component component, String value, + Constants.SearchType searchType) { + if (searchType.equals(Constants.SearchType.AUTHOR)) { WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value); - } else if (searchType.equals(SearchType.COMMITTER)) { + } else if (searchType.equals(Constants.SearchType.COMMITTER)) { WicketUtils.setHtmlTooltip(component, getString("gb.searchForCommitter") + " " + value); } } @@ -299,13 +311,14 @@ private final IModel<String> searchBoxModel = new Model<String>(""); - private final IModel<SearchType> searchTypeModel = new Model<SearchType>(SearchType.COMMIT); + private final IModel<Constants.SearchType> searchTypeModel = new Model<Constants.SearchType>( + Constants.SearchType.COMMIT); public SearchForm(String id, String repositoryName) { super(id); this.repositoryName = repositoryName; - DropDownChoice<SearchType> searchType = new DropDownChoice<SearchType>("searchType", - Arrays.asList(SearchType.values())); + DropDownChoice<Constants.SearchType> searchType = new DropDownChoice<Constants.SearchType>( + "searchType", Arrays.asList(Constants.SearchType.values())); searchType.setModel(searchTypeModel); add(searchType.setVisible(GitBlit.getBoolean(Keys.web.showSearchTypeSelection, false))); TextField<String> searchBox = new TextField<String>("searchBox", searchBoxModel); @@ -321,13 +334,13 @@ @Override public void onSubmit() { - SearchType searchType = searchTypeModel.getObject(); + Constants.SearchType searchType = searchTypeModel.getObject(); String searchString = searchBoxModel.getObject(); if (searchString == null) { // FIXME IE intermittently has no searchString. Wicket bug? return; } - for (SearchType type : SearchType.values()) { + for (Constants.SearchType type : Constants.SearchType.values()) { if (searchString.toLowerCase().startsWith(type.name().toLowerCase() + ":")) { searchType = type; searchString = searchString.substring(type.name().toLowerCase().length() + 1) -- Gitblit v1.9.1