Fix clearing of topic during replace
When uploading a replacement patch set to a change that already has
a topic tag, we don't want to clear the topic if the user hasn't
specified it on the command line.
Bug: issue 676
Change-Id: I89c6b7290dab7bbf37c15cad11004fa886e80a7e
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index fbcdc09..a3140ec 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -620,12 +620,11 @@
if (split < destBranchName.length()) {
destTopicName = destBranchName.substring(split + 1);
+ if (destTopicName.isEmpty()) {
+ destTopicName = null;
+ }
} else {
- // We use empty string here to denote the topic wasn't
- // supplied, but the caller used the syntax that allows
- // for a topic to be given.
- //
- destTopicName = "";
+ destTopicName = null;
}
destBranch = new Branch.NameKey(project.getNameKey(), //
destBranchName.substring(0, split));
@@ -876,7 +875,7 @@
final Change change =
new Change(changeKey, new Change.Id(db.nextChangeId()), me, destBranch);
- change.setTopic(destTopicName.isEmpty() ? null : destTopicName);
+ change.setTopic(destTopicName);
change.nextPatchSetId();
final PatchSet ps = new PatchSet(change.currPatchSetId());
@@ -1177,9 +1176,7 @@
public Change update(Change change) {
if (change.getStatus().isOpen()) {
if (destTopicName != null) {
- change.setTopic(destTopicName.isEmpty() //
- ? null //
- : destTopicName);
+ change.setTopic(destTopicName);
}
change.setStatus(Change.Status.NEW);
change.setCurrentPatchSet(result.info);