From 88ec32f91b3df15e063a2b2dcea3c90f3c65d835 Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 31 Jul 2013 15:55:28 -0400 Subject: Improvements to reflog branch deletion --- .../com/gitblit/wicket/panels/BranchesPanel.java | 42 ++++++++++++---------- 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'src/main/java/com/gitblit/wicket/panels') diff --git a/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java b/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java index 85d00296..dba40897 100644 --- a/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/BranchesPanel.java @@ -199,29 +199,35 @@ public class BranchesPanel extends BasePanel { return; } final String branch = entry.getName(); - boolean success = JGitUtils.deleteBranchRef(r, branch); - if (success) { - // clear commit cache - CommitCache.instance().clear(repositoryModel.name, 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); + } + } - // optionally update reflog - if (RefLogUtils.hasRefLogBranch(r)) { - UserModel user = GitBlitWebSession.get().getUser(); - success = RefLogUtils.deleteRef(user, r, branch); + 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(); -- cgit v1.2.3