From f254eee8b43efc924a8272f774de4e5a8333a7f5 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 14 Apr 2014 15:07:23 -0400
Subject: [PATCH] Improve ticket branch ref deletion push handling
---
src/main/java/com/gitblit/git/PatchsetReceivePack.java | 15 +++++++++++++++
releases.moxie | 2 ++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/releases.moxie b/releases.moxie
index f683f2b..151f9c3 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -21,8 +21,10 @@
- Repository mailing lists could not be reset from the Edit Repository page (issue-399)
- Fix intermittent NPE in determining commit date in RefModel (issue-401)
- Fix closing ticket on push by parsing commit messages for closes|fixes (issue-404)
+ - Fix diffstat display for a ticket with a pending submodule change (issue-407)
- Ensure the Lucene ticket index is updated on repository deletion.
- Fixed failure to properly determine hasTicket in RedisTicketService
+ - Fixed handling of pushing ticket branch deletions
changes:
- Switch from GoogleCharts to self-hosted flotr2 charts (issue-283, ticket-43, pr-166)
- Specify the --dailyLogFile option for the Ubuntu and CentOS service scripts (issue-348)
diff --git a/src/main/java/com/gitblit/git/PatchsetReceivePack.java b/src/main/java/com/gitblit/git/PatchsetReceivePack.java
index 77d5a71..43efc54 100644
--- a/src/main/java/com/gitblit/git/PatchsetReceivePack.java
+++ b/src/main/java/com/gitblit/git/PatchsetReceivePack.java
@@ -309,6 +309,7 @@
}
if (isPatchsetRef(cmd.getRefName()) && processPatchsets) {
+
if (ticketService == null) {
sendRejection(cmd, "Sorry, the ticket service is unavailable and can not accept patchsets at this time.");
continue;
@@ -346,6 +347,20 @@
continue;
}
+ if (cmd.getNewId().equals(ObjectId.zeroId())) {
+ // ref deletion request
+ if (cmd.getRefName().startsWith(Constants.R_TICKET)) {
+ if (user.canDeleteRef(repository)) {
+ batch.addCommand(cmd);
+ } else {
+ sendRejection(cmd, "Sorry, you do not have permission to delete {}", cmd.getRefName());
+ }
+ } else {
+ sendRejection(cmd, "Sorry, you can not delete {}", cmd.getRefName());
+ }
+ continue;
+ }
+
if (patchsetRefCmd != null) {
sendRejection(cmd, "You may only push one patchset at a time.");
continue;
--
Gitblit v1.9.1