From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/main/java/com/gitblit/wicket/panels/BranchesPanel.java | 95 +++++++++++++++++++++++++---------------------- 1 files changed, 51 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java b/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java index 85d0029..7a564aa 100644 --- a/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java @@ -37,11 +37,11 @@ import org.eclipse.jgit.lib.Repository; import com.gitblit.Constants; -import com.gitblit.GitBlit; -import com.gitblit.SyndicationServlet; import com.gitblit.models.RefModel; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.servlet.RawServlet; +import com.gitblit.servlet.SyndicationServlet; import com.gitblit.utils.CommitCache; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.RefLogUtils; @@ -101,23 +101,26 @@ // branches page add(new Label("branches", new StringResourceModel("gb.branches", this, null))); } - + // only allow delete if we have multiple branches final boolean showDelete = showAdmin && branches.size() > 1; - + ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches); DataView<RefModel> branchesView = new DataView<RefModel>("branch", branchesDp) { private static final long serialVersionUID = 1L; int counter; + @Override public void populateItem(final Item<RefModel> item) { final RefModel entry = item.getModelObject(); + + PageParameters shortUniqRef = WicketUtils.newObjectParameter(model.name, + Repository.shortenRefName(entry.getName())); item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), getTimeZone(), getTimeUtils())); item.add(new LinkPanel("branchName", "list name", StringUtils.trimString( - entry.displayName, 28), LogPage.class, WicketUtils.newObjectParameter( - model.name, entry.getName()))); + entry.displayName, 28), LogPage.class, shortUniqRef)); String author = entry.getAuthorIdent().getName(); LinkPanel authorLink = new LinkPanel("branchAuthor", "list", author, @@ -130,34 +133,32 @@ String shortMessage = entry.getShortMessage(); String trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); LinkPanel shortlog = new LinkPanel("branchLog", "list subject", trimmedMessage, - CommitPage.class, WicketUtils.newObjectParameter(model.name, - entry.getName())); + CommitPage.class, shortUniqRef); if (!shortMessage.equals(trimmedMessage)) { - WicketUtils.setHtmlTooltip(shortlog, shortMessage); + shortlog.setTooltip(shortMessage); } item.add(shortlog); - + if (maxCount <= 0) { Fragment fragment = new Fragment("branchLinks", showDelete? "branchPageAdminLinks" : "branchPageLinks", this); - fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils - .newObjectParameter(model.name, entry.getName()))); - fragment.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils - .newObjectParameter(model.name, entry.getName()))); - fragment.add(new BookmarkablePageLink<Void>("metrics", MetricsPage.class, - WicketUtils.newObjectParameter(model.name, entry.getName()))); + fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class, shortUniqRef)); + fragment.add(new BookmarkablePageLink<Void>("tree", TreePage.class, shortUniqRef)); + String rawUrl = RawServlet.asLink(getContextUrl(), model.name, Repository.shortenRefName(entry.getName()), null); + fragment.add(new ExternalLink("raw", rawUrl)); + fragment.add(new BookmarkablePageLink<Void>("metrics", MetricsPage.class, shortUniqRef)); fragment.add(new ExternalLink("syndication", SyndicationServlet.asLink( getRequest().getRelativePathPrefixToContextRoot(), model.name, - entry.getName(), 0))); + Repository.shortenRefName(entry.getName()), 0))); if (showDelete) { fragment.add(createDeleteBranchLink(model, entry)); } item.add(fragment); } else { Fragment fragment = new Fragment("branchLinks", "branchPanelLinks", this); - fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils - .newObjectParameter(model.name, entry.getName()))); - fragment.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils - .newObjectParameter(model.name, entry.getName()))); + fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class, shortUniqRef)); + fragment.add(new BookmarkablePageLink<Void>("tree", TreePage.class, shortUniqRef)); + String rawUrl = RawServlet.asLink(getContextUrl(), model.name, Repository.shortenRefName(entry.getName()), null); + fragment.add(new ExternalLink("raw", rawUrl)); item.add(fragment); } WicketUtils.setAlternatingBackground(item, counter); @@ -189,9 +190,9 @@ @Override public void onClick() { - Repository r = GitBlit.self().getRepository(repositoryModel.name); + Repository r = app().repositories().getRepository(repositoryModel.name); if (r == null) { - if (GitBlit.self().isCollectingGarbage(repositoryModel.name)) { + if (app().repositories().isCollectingGarbage(repositoryModel.name)) { error(MessageFormat.format(getString("gb.busyCollectingGarbage"), repositoryModel.name)); } else { error(MessageFormat.format("Failed to find repository {0}", repositoryModel.name)); @@ -199,29 +200,35 @@ return; } final String branch = entry.getName(); - boolean success = JGitUtils.deleteBranchRef(r, branch); - if (success) { - // clear commit cache - CommitCache.instance().clear(repositoryModel.name, branch); - - // optionally update reflog - if (RefLogUtils.hasRefLogBranch(r)) { - UserModel user = GitBlitWebSession.get().getUser(); - success = RefLogUtils.deleteRef(user, r, branch); + Ref ref = null; + try { + ref = r.getRef(branch); + if (ref == null && !branch.startsWith(Constants.R_HEADS)) { + ref = r.getRef(Constants.R_HEADS + branch); + } + } catch (IOException e) { + } + if (ref != null) { + boolean success = JGitUtils.deleteBranchRef(r, ref.getName()); + if (success) { + // clear commit cache + CommitCache.instance().clear(repositoryModel.name, branch); + + // optionally update reflog + if (RefLogUtils.hasRefLogBranch(r)) { + UserModel user = GitBlitWebSession.get().getUser(); + RefLogUtils.deleteRef(user, r, ref); + } + } + + if (success) { + info(MessageFormat.format("Branch \"{0}\" deleted", branch)); + } else { + error(MessageFormat.format("Failed to delete branch \"{0}\"", branch)); } } - r.close(); - - if (success) { - info(MessageFormat.format("Branch \"{0}\" deleted", branch)); - // redirect to the owning page - setResponsePage(getPage().getClass(), WicketUtils.newRepositoryParameter(repositoryModel.name)); - } - else { - error(MessageFormat.format("Failed to delete branch \"{0}\"", branch)); - } - + // redirect to the owning page PageParameters params = WicketUtils.newRepositoryParameter(repositoryModel.name); String relativeUrl = urlFor(getPage().getClass(), params).toString(); @@ -229,7 +236,7 @@ getRequestCycle().setRequestTarget(new RedirectRequestTarget(absoluteUrl)); } }; - + deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format( "Delete branch \"{0}\"?", entry.displayName ))); return deleteLink; -- Gitblit v1.9.1