From ed882589e15422e03267ffb9ca6cb1a7376d1822 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 12 Mar 2014 22:31:59 -0400
Subject: [PATCH] Merged #30 "Watch list push parameters are not always honored"

---
 src/main/java/com/gitblit/git/PatchsetReceivePack.java |    6 +++---
 src/main/java/com/gitblit/models/TicketModel.java      |   16 +++++++++++++++-
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/gitblit/git/PatchsetReceivePack.java b/src/main/java/com/gitblit/git/PatchsetReceivePack.java
index 697b8b9..3ec3086 100644
--- a/src/main/java/com/gitblit/git/PatchsetReceivePack.java
+++ b/src/main/java/com/gitblit/git/PatchsetReceivePack.java
@@ -163,11 +163,11 @@
 
 	/** Extracts the ticket id from the ref name */
 	private long getTicketId(String refName) {
+		if (refName.indexOf('%') > -1) {
+			refName = refName.substring(0, refName.indexOf('%'));
+		}
 		if (refName.startsWith(Constants.R_FOR)) {
 			String ref = refName.substring(Constants.R_FOR.length());
-			if (ref.indexOf('%') > -1) {
-				ref = ref.substring(0, ref.indexOf('%'));
-			}
 			try {
 				return Long.parseLong(ref);
 			} catch (Exception e) {
diff --git a/src/main/java/com/gitblit/models/TicketModel.java b/src/main/java/com/gitblit/models/TicketModel.java
index fa09ec5..aced6d7 100644
--- a/src/main/java/com/gitblit/models/TicketModel.java
+++ b/src/main/java/com/gitblit/models/TicketModel.java
@@ -785,7 +785,21 @@
 			for (String item : items) {
 				list.add(prefix + item);
 			}
-			setField(field, join(list, ","));
+			if (hasField(field)) {
+				String flat = getString(field);
+				if (isEmpty(flat)) {
+					// field is empty, use this list
+					setField(field, join(list, ","));
+				} else {
+					// merge this list into the existing field list
+					Set<String> set = new TreeSet<String>(Arrays.asList(flat.split(",")));
+					set.addAll(list);
+					setField(field, join(set, ","));
+				}
+			} else {
+				// does not have a list for this field
+				setField(field, join(list, ","));
+			}
 		}
 
 		public String getId() {

--
Gitblit v1.9.1