Merge branch 'stable-2.12'

* stable-2.12:
  Fix sending of inline comments on commit message for initial change
  AbstractQueryChangesTest: Add test for query by draft status
  Fix schema 115: Create a new MetaDataUpdate instance for each update
  Add the --strict-labels option to SSH review command
  Allow to add custom core plugins in release build
  Maven: Split Maven repository settings out to a separate def file

Change-Id: I6025858f08214056c288823fe1ce79685800182a
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java
index 8740a6b..e479ba9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java
@@ -26,6 +26,7 @@
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevObject;
 import org.eclipse.jgit.revwalk.RevTree;
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.TreeWalk;
@@ -56,7 +57,11 @@
         if (patchList.isAgainstParent()) {
           a = Text.EMPTY;
         } else {
-          a = Text.forCommit(reader, patchList.getOldId());
+          // For the initial commit, we have an empty tree on Side A
+          RevObject object = rw.parseAny(patchList.getOldId());
+          a = object instanceof RevCommit
+              ? Text.forCommit(reader, object)
+              : Text.EMPTY;
         }
         b = Text.forCommit(reader, bCommit);
 
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
index 6b91a12..10afa49 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
@@ -287,6 +287,28 @@
   }
 
   @Test
+  public void byStatusDraft() throws Exception {
+    TestRepository<Repo> repo = createProject("repo");
+    ChangeInserter ins1 = newChange(repo, null, null, null, null);
+    Change change1 = ins1.getChange();
+    change1.setStatus(Change.Status.NEW);
+    insert(ins1);
+    ChangeInserter ins2 = newChange(repo, null, null, null, null);
+    Change change2 = ins2.getChange();
+    change2.setStatus(Change.Status.DRAFT);
+    insert(ins2);
+
+    Change[] expected = new Change[] {change2};
+    assertQuery("status:draft", expected);
+    assertQuery("status:DRAFT", expected);
+    assertQuery("status:d", expected);
+    assertQuery("status:dr", expected);
+    assertQuery("status:dra", expected);
+    assertQuery("status:draf", expected);
+    assertQuery("is:draft", expected);
+  }
+
+  @Test
   public void byStatusClosed() throws Exception {
     TestRepository<Repo> repo = createProject("repo");
     ChangeInserter ins1 = newChange(repo, null, null, null, null);
diff --git a/plugins/BUCK b/plugins/BUCK
index a31237d..9948720 100644
--- a/plugins/BUCK
+++ b/plugins/BUCK
@@ -6,6 +6,9 @@
   'reviewnotes',
   'singleusergroup'
 ]
+CUSTOM = [
+  # Add custom core plugins here
+]
 
 # buck audit parses and resolves all deps even if not reachable
 # from the root(s) passed to audit. Filter dependencies to only
@@ -20,7 +23,7 @@
     else:
       n.append(p)
   return h, n
-HAVE, NEED = core_plugins(CORE)
+HAVE, NEED = core_plugins(CORE + CUSTOM)
 
 genrule(
   name = 'core',
diff --git a/tools/maven/BUCK b/tools/maven/BUCK
index 98a7ade..fcd77c0 100644
--- a/tools/maven/BUCK
+++ b/tools/maven/BUCK
@@ -1,12 +1,14 @@
 include_defs('//VERSION')
 include_defs('//tools/maven/package.defs')
+include_defs('//tools/maven/repository.defs')
 
-URL = 'https://oss.sonatype.org/content/repositories/snapshots' \
-      if GERRIT_VERSION.endswith('-SNAPSHOT') else \
-        'https://oss.sonatype.org/service/local/staging/deploy/maven2'
+if GERRIT_VERSION.endswith('-SNAPSHOT'):
+  URL = MAVEN_SNAPSHOT_URL
+else:
+  URL = MAVEN_RELEASE_URL
 
 maven_package(
-  repository = 'sonatype-nexus-staging',
+  repository = MAVEN_REPOSITORY,
   url = URL,
   version = GERRIT_VERSION,
   jar = {
diff --git a/tools/maven/repository.defs b/tools/maven/repository.defs
new file mode 100644
index 0000000..c4e8fbf
--- /dev/null
+++ b/tools/maven/repository.defs
@@ -0,0 +1,3 @@
+MAVEN_REPOSITORY = 'sonatype-nexus-staging'
+MAVEN_SNAPSHOT_URL = 'https://oss.sonatype.org/content/repositories/snapshots'
+MAVEN_RELEASE_URL = 'https://oss.sonatype.org/service/local/staging/deploy/maven2'