Merge branch 'stable-2.16' into stable-3.0 * stable-2.16: Upgrade bazlets to latest stable-2.16 to build with 2.16.20 API Change-Id: I5e7a5fdbee497793f19a137aec13cdd74424f512
diff --git a/.factorypath b/.factorypath new file mode 100644 index 0000000..c1c6e82 --- /dev/null +++ b/.factorypath
@@ -0,0 +1,3 @@ +<factorypath> + <factorypathentry kind="VARJAR" id="M2_REPO/com/google/auto/value/auto-value/1.7/auto-value-1.7.jar" enabled="true" runInBatchMode="false"/> +</factorypath>
diff --git a/.gitignore b/.gitignore index ec6ea01..4da386b 100644 --- a/.gitignore +++ b/.gitignore
@@ -11,3 +11,4 @@ /buck-out *.iml /.apt_generated/ +/.apt_generated_tests/
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 40e022d..538e9eb 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs
@@ -28,6 +28,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning @@ -86,6 +87,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled @@ -123,4 +125,5 @@ org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8
diff --git a/BUILD b/BUILD index 9acc76b..f364456 100644 --- a/BUILD +++ b/BUILD
@@ -1,15 +1,64 @@ -load("//tools/bzl:plugin.bzl", "PLUGIN_DEPS", "PLUGIN_TEST_DEPS", "gerrit_plugin") +load( + "//tools/bzl:plugin.bzl", + "PLUGIN_DEPS", + "PLUGIN_TEST_DEPS", + "gerrit_plugin", +) + +load("@rules_java//java:defs.bzl", "java_library", "java_plugin") + +java_plugin( + name = "auto-annotation-plugin", + processor_class = "com.google.auto.value.processor.AutoAnnotationProcessor", + deps = [ + "@auto-value-annotations//jar", + "@auto-value//jar", + ], +) + +java_plugin( + name = "auto-value-plugin", + processor_class = "com.google.auto.value.processor.AutoValueProcessor", + deps = [ + "@auto-value-annotations//jar", + "@auto-value//jar", + ], +) + +java_library( + name = "auto-value", + exported_plugins = [ + ":auto-annotation-plugin", + ":auto-value-plugin", + ], + visibility = ["//visibility:public"], + exports = ["@auto-value//jar"], +) + +java_library( + name = "auto-value-annotations", + exported_plugins = [ + ":auto-annotation-plugin", + ":auto-value-plugin", + ], + visibility = ["//visibility:public"], + exports = ["@auto-value-annotations//jar"], +) gerrit_plugin( name = "batch", srcs = glob(["src/main/java/**/*.java"]), manifest_entries = [ "Gerrit-PluginName: batch", - "Gerrit-ApiVersion: 2.16", + "Gerrit-ApiVersion: 3.0.0", "Implementation-Title: Batch Plugin", "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/batch", "Gerrit-Module: com.googlesource.gerrit.plugins.batch.Module", "Gerrit-SshModule: com.googlesource.gerrit.plugins.batch.ssh.SshModule", ], resources = glob(["src/main/resources/**/*"]), + deps = [ + ":auto-value", + ":auto-value-annotations" + ], )
diff --git a/WORKSPACE b/WORKSPACE index 3010a80..1dac920 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -3,7 +3,7 @@ load("//:bazlets.bzl", "load_bazlets") load_bazlets( - commit = "c40247e30381ddc4a90ef99d749a9161ac4d064b", + commit = "15eae2ee5cd524a204bd62c3d59bfd0ce86916ec", #local_path = "/home/<user>/projects/bazlets", ) @@ -22,5 +22,21 @@ # Load release Plugin API gerrit_api() +load("//tools/bzl:maven_jar.bzl", "GERRIT", "maven_jar") + +AUTO_VALUE_VERSION = "1.6.5" + +maven_jar( + name = "auto-value", + artifact = "com.google.auto.value:auto-value:" + AUTO_VALUE_VERSION, + sha1 = "816872c85048f36a67a276ef7a49cc2e4595711c", +) + +maven_jar( + name = "auto-value-annotations", + artifact = "com.google.auto.value:auto-value-annotations:" + AUTO_VALUE_VERSION, + sha1 = "c3dad10377f0e2242c9a4b88e9704eaf79103679", +) + # Load snapshot Plugin API #gerrit_api_maven_local()
diff --git a/pom.xml b/pom.xml index ae82977..b1ea7c7 100644 --- a/pom.xml +++ b/pom.xml
@@ -22,12 +22,13 @@ <groupId>com.googlesource.gerrit.plugins.batch</groupId> <artifactId>batch</artifactId> <packaging>jar</packaging> - <version>2.16.11.1</version> + <version>3.0.9</version> <name>batch</name> <properties> <Gerrit-ApiType>plugin</Gerrit-ApiType> <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion> + <auto-value.version>1.6.5</auto-value.version> </properties> <build> @@ -64,6 +65,13 @@ <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> + <annotationProcessorPaths> + <path> + <groupId>com.google.auto.value</groupId> + <artifactId>auto-value</artifactId> + <version>${auto-value.version}</version> + </path> + </annotationProcessorPaths> </configuration> </plugin> </plugins> @@ -76,6 +84,12 @@ <version>${Gerrit-ApiVersion}</version> <scope>provided</scope> </dependency> + + <dependency> + <groupId>com.google.auto.value</groupId> + <artifactId>auto-value-annotations</artifactId> + <version>${auto-value.version}</version> + </dependency> </dependencies> <repositories>
diff --git a/src/main/java/com/google/gerrit/entities/FileNameKey.java b/src/main/java/com/google/gerrit/entities/FileNameKey.java new file mode 100644 index 0000000..d415278 --- /dev/null +++ b/src/main/java/com/google/gerrit/entities/FileNameKey.java
@@ -0,0 +1,39 @@ +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.entities; + +import com.google.auto.value.AutoValue; +import com.google.gerrit.reviewdb.client.Branch; +import com.google.gerrit.reviewdb.client.Project; + +/** An immutable reference to a file in gerrit repo. */ +@AutoValue +public abstract class FileNameKey implements Comparable<FileNameKey> { + public static FileNameKey create(Branch.NameKey branch, String file) { + return new AutoValue_FileNameKey(branch, file); + } + + public static FileNameKey create() { + return new AutoValue_FileNameKey(new Branch.NameKey(new Project.NameKey(null), null), null); + } + + public abstract Branch.NameKey branch(); + public abstract String file(); + + @Override + public final int compareTo(FileNameKey o) { + return file().compareTo(o.file()); + } +}
diff --git a/src/main/java/com/google/gerrit/reviewdb/client/File.java b/src/main/java/com/google/gerrit/reviewdb/client/File.java deleted file mode 100644 index 78e2f84..0000000 --- a/src/main/java/com/google/gerrit/reviewdb/client/File.java +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright (C) 2017 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.gerrit.reviewdb.client; - -import com.google.gwtorm.client.StringKey; - -public class File { - /** An immutable reference to a file in gerrit repo. */ - public static class NameKey extends StringKey<Branch.NameKey> { - private static final long serialVersionUID = 1L; - - protected Branch.NameKey branch; - protected String fileName; - - protected NameKey() { - branch = new Branch.NameKey(new Project.NameKey(null), null); - } - - public NameKey(Branch.NameKey br, String file) { - branch = br; - fileName = file; - } - - @Override - public String get() { - return fileName; - } - - @Override - protected void set(String file) { - fileName = file; - } - - @Override - public Branch.NameKey getParentKey() { - return branch; - } - } -}
diff --git a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java index ce9505e..4fe617d 100644 --- a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java +++ b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
@@ -15,8 +15,8 @@ package com.google.gerrit.server.git.meta; import com.google.gerrit.reviewdb.client.Branch; -import com.google.gerrit.reviewdb.client.File; import com.google.gerrit.reviewdb.client.Project; +import com.google.gerrit.entities.FileNameKey; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.project.NoSuchProjectException; import com.google.inject.Inject; @@ -31,7 +31,7 @@ /** A GitFile is a text file (UTF8) from a git repository */ public class GitFile extends VersionedMetaData { public interface Factory { - GitFile create(@Assisted File.NameKey file); + GitFile create(@Assisted FileNameKey file); } protected final MetaDataUpdate.User metaDataUpdateFactory; @@ -46,11 +46,11 @@ public GitFile( MetaDataUpdate.User metaDataUpdateFactory, GitRepositoryManager repos, - @Assisted File.NameKey file) { + @Assisted FileNameKey file) { this.metaDataUpdateFactory = metaDataUpdateFactory; this.repos = repos; - this.branch = file.getParentKey(); - this.file = file.get(); + this.branch = file.branch(); + this.file = file.file(); } public String read() throws ConfigInvalidException, IOException, NoSuchProjectException {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java index d582af4..7290148 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
@@ -14,7 +14,7 @@ package com.googlesource.gerrit.plugins.batch; import com.google.gerrit.reviewdb.client.Branch; -import com.google.gerrit.reviewdb.client.File; +import com.google.gerrit.entities.FileNameKey; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.git.GitRepositoryManager; @@ -106,7 +106,7 @@ throw new NoSuchBatchException(id); } - protected File.NameKey getFileNameKey(String id) { + protected FileNameKey getFileNameKey(String id) { return getFileNameKey(getBranch(id)); } @@ -114,7 +114,7 @@ return new Branch.NameKey(project, BATCHES_REF + id); } - protected File.NameKey getFileNameKey(Branch.NameKey branch) { - return new File.NameKey(branch, FILE_NAME); + protected FileNameKey getFileNameKey(Branch.NameKey branch) { + return FileNameKey.create(branch, FILE_NAME); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java index 3893d3c..018f524 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
@@ -21,7 +21,6 @@ import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.git.GitRepositoryManager; @@ -39,7 +38,6 @@ import com.google.gerrit.server.util.RefUpdater; import com.google.gerrit.server.util.RequestScopePropagator; import com.google.gerrit.server.util.time.TimeUtil; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.googlesource.gerrit.plugins.batch.exception.NoSuchBatchException; import java.io.IOException; @@ -53,7 +51,6 @@ public class BatchSubmitter { private static final FluentLogger log = FluentLogger.forEnclosingClass(); - protected final ReviewDb db; protected final GitRepositoryManager repoManager; protected final RefUpdater refUpdater; protected final RequestScopePropagator requestScopePropagator; @@ -68,7 +65,6 @@ @Inject BatchSubmitter( - ReviewDb db, GitRepositoryManager repoManager, RefUpdater refUpdater, RequestScopePropagator requestScopePropagator, @@ -80,7 +76,6 @@ PatchSetUtil psUtil, BatchStore store, BatchRemover remover) { - this.db = db; this.repoManager = repoManager; this.refUpdater = refUpdater; this.requestScopePropagator = requestScopePropagator; @@ -96,7 +91,7 @@ public Batch submit(String id) throws IOException, IllegalStateException, NoSuchBatchException, NoSuchProjectException, - OrmException, RestApiException, UpdateException, PermissionBackendException { + RestApiException, UpdateException, PermissionBackendException { Batch batch = store.read(id); if (batch.state == Batch.State.OPEN) { throw new IllegalStateException("Cannot submit batch " + id + " in state " + batch.state); @@ -121,8 +116,8 @@ } private void submit(Batch batch) - throws IOException, OrmException, NoSuchProjectException, RepositoryNotFoundException, - RestApiException, UpdateException, PermissionBackendException { + throws IOException, NoSuchProjectException, RepositoryNotFoundException, RestApiException, + UpdateException, PermissionBackendException { for (Batch.Destination dest : batch.listDestinations()) { updateRef(dest); closeChanges(dest); @@ -137,8 +132,8 @@ } private void closeChanges(Batch.Destination dest) - throws IOException, OrmException, RepositoryNotFoundException, RestApiException, - UpdateException, PermissionBackendException { + throws IOException, RepositoryNotFoundException, RestApiException, UpdateException, + PermissionBackendException { if (dest.changes != null) { for (Batch.Change change : dest.changes) { closeChange(change.toPatchSetId(), dest.sha1); @@ -147,12 +142,12 @@ } private void closeChange(PatchSet.Id psId, String sha1) - throws IOException, OrmException, RepositoryNotFoundException, RestApiException, - UpdateException, PermissionBackendException { + throws IOException, RepositoryNotFoundException, RestApiException, UpdateException, + PermissionBackendException { ChangeNotes changeNotes = notesFactory.createChecked(psId.getParentKey()); - permissionBackend.user(user).database(db).change(changeNotes).check(ChangePermission.READ); + permissionBackend.user(user).change(changeNotes).check(ChangePermission.READ); Change change = changeNotes.getChange(); - PatchSet ps = psUtil.get(db, changeNotes, psId); + PatchSet ps = psUtil.get(changeNotes, psId); if (change == null || ps == null) { log.atSevere().log("%s is missing", psId); return; @@ -169,11 +164,11 @@ TraceContext.open() .addTag(RequestId.Type.SUBMISSION_ID, new RequestId(change.getId().toString())); Repository repo = repoManager.openRepository(project); - BatchUpdate bu = batchUpdateFactory.create(db, project, user, TimeUtil.nowTs()); + BatchUpdate bu = batchUpdateFactory.create(project, user, TimeUtil.nowTs()); ObjectInserter ins = repo.newObjectInserter(); ObjectReader reader = ins.newReader(); RevWalk walk = new RevWalk(reader)) { - bu.setRepository(repo, walk, ins).updateChangesInParallel(); + bu.setRepository(repo, walk, ins); bu.setRefLogMessage("merged (batch submit)"); bu.addOp( psId.getParentKey(),
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ListBatches.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ListBatches.java index b997d75..db1809e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/ListBatches.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ListBatches.java
@@ -20,9 +20,8 @@ import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.index.query.Predicate; import com.google.gerrit.index.query.QueryParseException; -import com.google.gerrit.server.OutputFormat; +import com.google.gerrit.json.OutputFormat; import com.google.gson.reflect.TypeToken; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.googlesource.gerrit.plugins.batch.query.BatchQueryBuilder; import java.io.BufferedWriter; @@ -58,8 +57,7 @@ this.store = store; } - public void display(OutputStream displayOutputStream) - throws IOException, OrmException, QueryParseException { + public void display(OutputStream displayOutputStream) throws IOException, QueryParseException { try { PrintWriter stdout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(displayOutputStream, UTF_8))); @@ -76,7 +74,7 @@ } } - public List<Batch> getBatches() throws IOException, OrmException, QueryParseException { + public List<Batch> getBatches() throws IOException, QueryParseException { Predicate<Batch> pred = null; if (query != null) { pred = queryBuilder.parse(Joiner.on(" ").join(query));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/cli/PatchSetArgument.java b/src/main/java/com/googlesource/gerrit/plugins/batch/cli/PatchSetArgument.java index da157f8..4feb2fa 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/cli/PatchSetArgument.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/cli/PatchSetArgument.java
@@ -16,7 +16,6 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.notedb.ChangeNotes; @@ -24,14 +23,12 @@ import com.google.gerrit.server.permissions.PermissionBackend; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.sshd.BaseCommand.UnloggedFailure; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; public class PatchSetArgument { public static class Factory { protected final PermissionBackend permissionBackend; protected final ChangeNotes.Factory notesFactory; - protected final ReviewDb reviewDb; protected final PatchSetUtil psUtil; protected final CurrentUser user; @@ -39,12 +36,10 @@ protected Factory( ChangeNotes.Factory notesFactory, PermissionBackend permissionBackend, - ReviewDb reviewDb, PatchSetUtil psUtil, CurrentUser user) { this.notesFactory = notesFactory; this.permissionBackend = permissionBackend; - this.reviewDb = reviewDb; this.psUtil = psUtil; this.user = user; } @@ -53,19 +48,12 @@ try { PatchSet.Id patchSetId = parsePatchSet(token); ChangeNotes changeNotes = notesFactory.createChecked(patchSetId.getParentKey()); - permissionBackend - .user(user) - .database(reviewDb) - .change(changeNotes) - .check(ChangePermission.READ); - return new PatchSetArgument( - changeNotes.getChange(), psUtil.get(reviewDb, changeNotes, patchSetId)); + permissionBackend.user(user).change(changeNotes).check(ChangePermission.READ); + return new PatchSetArgument(changeNotes.getChange(), psUtil.get(changeNotes, patchSetId)); } catch (PermissionBackendException | AuthException e) { throw new IllegalArgumentException("database error", e); } catch (UnloggedFailure e) { throw new IllegalArgumentException(e.getMessage(), e); - } catch (OrmException e) { - throw new IllegalArgumentException("database error", e); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/query/BatchQueryBuilder.java b/src/main/java/com/googlesource/gerrit/plugins/batch/query/BatchQueryBuilder.java index 160fde6..0875963 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/query/BatchQueryBuilder.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/query/BatchQueryBuilder.java
@@ -31,7 +31,7 @@ import org.eclipse.jgit.lib.Config; /** Parses a query string meant to be applied to batch objects. */ -public class BatchQueryBuilder extends QueryBuilder<Batch> { +public class BatchQueryBuilder extends QueryBuilder<Batch, BatchQueryBuilder> { public abstract static class SimplePredicate extends OperatorPredicate<Batch> implements Matchable<Batch> { public SimplePredicate(String op, String val) { @@ -65,7 +65,7 @@ PluginConfigFactory cfgFactory, BatchStore store, @PluginName String pluginName) { - super(mydef); + super(mydef, null); this.projectCache = projectCache; this.cfgFactory = cfgFactory; this.store = store;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/DeleteCommand.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/DeleteCommand.java index aeec6b7..10d1f17 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/DeleteCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/DeleteCommand.java
@@ -15,7 +15,7 @@ import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.extensions.annotations.RequiresCapability; -import com.google.gerrit.server.OutputFormat; +import com.google.gerrit.json.OutputFormat; import com.google.gerrit.sshd.CommandMetaData; import com.google.gerrit.sshd.SshCommand; import com.google.inject.Inject;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java index 37b4428..64ccacc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
@@ -13,12 +13,11 @@ // limitations under the License. package com.googlesource.gerrit.plugins.batch.ssh; +import com.google.gerrit.json.OutputFormat; import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; -import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.OutputFormat; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.project.NoSuchRefException; import com.google.gerrit.sshd.CommandMetaData; @@ -84,7 +83,6 @@ @Inject protected PatchSetArgument.Factory patchSetArgumentFactory; @Inject protected MergeBranch.Factory mergeBranchFactory; @Inject protected BatchCloser batchCloser; - @Inject protected ReviewDb db; @Inject protected GitRepositoryManager repoManager; protected Map<PatchSet.Id, List<ObjectId>> parentsByPsarg = new HashMap<>(); @@ -151,7 +149,7 @@ protected ObjectId getTip(Branch.NameKey branch) throws IOException, NoSuchRefException, RepositoryNotFoundException { try (Repository repo = repoManager.openRepository(branch.getParentKey())) { - Ref ref = repo.getRefDatabase().getRef(branch.get()); + Ref ref = repo.getRefDatabase().exactRef(branch.get()); if (ref == null) { throw new NoSuchRefException(branch.toString()); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/SubmitCommand.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/SubmitCommand.java index 1737818..a753c36 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/SubmitCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/SubmitCommand.java
@@ -14,7 +14,7 @@ package com.googlesource.gerrit.plugins.batch.ssh; -import com.google.gerrit.server.OutputFormat; +import com.google.gerrit.json.OutputFormat; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.sshd.CommandMetaData; import com.google.gerrit.sshd.SshCommand;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java index 5d9323e..bcec3a7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java +++ b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
@@ -89,7 +89,7 @@ throws IOException, NoSuchRefException, RepositoryNotFoundException, IntegrationException, BadRequestException { try (Repository repo = repoManager.openRepository(projectName)) { - Ref destRef = repo.getRefDatabase().getRef(destName); + Ref destRef = repo.getRefDatabase().exactRef(destName); if (destRef == null) { throw new NoSuchRefException(destName); }
diff --git a/test/test_batch_merge.sh b/test/test_batch_merge.sh index cb7bc67..d0ca20f 100755 --- a/test/test_batch_merge.sh +++ b/test/test_batch_merge.sh
@@ -66,7 +66,7 @@ query_by() { echo "$1" | awk '/^ *'"$2"':/{print $2}' ; } # qchange key > val get_change_num() { # < gerrit_push_response > changenum - local url=$(awk '/New Changes:/ { getline; print $2 }') + local url=$(awk '$NF ~ /\[NEW\]/ { print $2 }') echo "${url##*\/}" | tr -d -c '[:digit:]' }
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl new file mode 100644 index 0000000..ed1504d --- /dev/null +++ b/tools/bzl/maven_jar.bzl
@@ -0,0 +1,4 @@ +load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _gerrit = "GERRIT", _maven_jar = "maven_jar") + +maven_jar = _maven_jar +GERRIT = _gerrit
diff --git a/tools/workspace-status.py b/tools/workspace-status.py new file mode 100755 index 0000000..829f438 --- /dev/null +++ b/tools/workspace-status.py
@@ -0,0 +1,31 @@ +#!/usr/bin/env python + +# This script will be run by bazel when the build process starts to +# generate key-value information that represents the status of the +# workspace. The output should be like +# +# KEY1 VALUE1 +# KEY2 VALUE2 +# +# If the script exits with non-zero code, it's considered as a failure +# and the output will be discarded. + +from __future__ import print_function +import subprocess +import sys + +CMD = ['git', 'describe', '--always', '--match', 'v[0-9].*', '--dirty'] + + +def revision(): + try: + return subprocess.check_output(CMD).strip().decode("utf-8") + except OSError as err: + print('could not invoke git: %s' % err, file=sys.stderr) + sys.exit(1) + except subprocess.CalledProcessError as err: + print('error using git: %s' % err, file=sys.stderr) + sys.exit(1) + + +print("STABLE_BUILD_BATCH_LABEL %s" % revision())