| | |
| | | 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;
|
| | |
| | | // 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,
|
| | |
| | | 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);
|
| | |
| | |
|
| | | @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));
|
| | |
| | | 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();
|
| | |
| | | getRequestCycle().setRequestTarget(new RedirectRequestTarget(absoluteUrl));
|
| | | }
|
| | | };
|
| | | |
| | |
|
| | | deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
|
| | | "Delete branch \"{0}\"?", entry.displayName )));
|
| | | return deleteLink;
|