Merge branch 'stable-3.0' into stable-3.3
* stable-3.0:
Fix JDBC connection not terminated after project rename
Change-Id: I0822bc4d34f24565d3b0c30bc5d981ac8d1a1d7e
diff --git a/.bazelignore b/.bazelignore
deleted file mode 100644
index 30f1613..0000000
--- a/.bazelignore
+++ /dev/null
@@ -1 +0,0 @@
-eclipse-out
diff --git a/.bazelrc b/.bazelrc
deleted file mode 100644
index 3ae03ff..0000000
--- a/.bazelrc
+++ /dev/null
@@ -1,2 +0,0 @@
-build --workspace_status_command="python ./tools/workspace_status.py"
-test --build_tests_only
diff --git a/.bazelversion b/.bazelversion
deleted file mode 100644
index 7c69a55..0000000
--- a/.bazelversion
+++ /dev/null
@@ -1 +0,0 @@
-3.7.0
diff --git a/.gitignore b/.gitignore
index 681ddba..f6a5a71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,3 @@
# `LC_COLLATE=C sort`
-/.apt_generated/
-/.classpath
-/.project
/.settings/
-/bazel-*
/bin/
-/eclipse-out/
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index c42a339..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,19 +0,0 @@
-workspace(name = "rename_project")
-
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
- commit = "a029d8e41d6211c8b23052aa0a0c2c7649577e85",
- #local_path = "/home/<user>/projects/bazlets",
-)
-
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
- "gerrit_api",
-)
-
-gerrit_api()
-
-load("//:external_plugin_deps.bzl", "external_plugin_deps")
-
-external_plugin_deps()
diff --git a/bazlets.bzl b/bazlets.bzl
deleted file mode 100644
index f089af4..0000000
--- a/bazlets.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
- commit,
- local_path = None):
- if not local_path:
- git_repository(
- name = NAME,
- remote = "https://gerrit.googlesource.com/bazlets",
- commit = commit,
- )
- else:
- native.local_repository(
- name = NAME,
- path = local_path,
- )
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/Configuration.java
index 1a3570d..a74c4cb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/Configuration.java
@@ -33,6 +33,7 @@
private final int indexThreads;
private final int sshCommandTimeout;
private final int sshConnectionTimeout;
+ private final String renameRegex;
private final Set<String> urls;
@@ -42,6 +43,7 @@
indexThreads = cfg.getInt("indexThreads", 4);
sshCommandTimeout = cfg.getInt("sshCommandTimeout", 0);
sshConnectionTimeout = cfg.getInt("sshConnectionTimeout", DEFAULT_SSH_CONNECTION_TIMEOUT_MS);
+ renameRegex = cfg.getString("renameRegex", ".+");
urls =
Arrays.stream(cfg.getStringList(URL_KEY))
@@ -66,4 +68,8 @@
public int getSshConnectionTimeout() {
return sshConnectionTimeout;
}
+
+ public String getRenameRegex() {
+ return renameRegex;
+ }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
index 170e0d6..91f018f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProject.java
@@ -14,8 +14,8 @@
package com.googlesource.gerrit.plugins.renameproject;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.client.ProjectState;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.git.meta.MetaDataUpdate;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectConfig;
@@ -44,23 +44,23 @@
MetaDataUpdate md = metaDataUpdateFactory.create(key);
ProjectConfig projectConfig = projectConfigFactory.read(md);
- Project p = projectConfig.getProject();
- p.setState(ProjectState.READ_ONLY);
+ projectConfig.updateProject(project -> project.setState(ProjectState.READ_ONLY));
md.setMessage(String.format("Lock project while renaming the project %s\n", key.get()));
projectConfig.commit(md);
- projectCache.evict(p);
+ Project p = projectConfig.getProject();
+ projectCache.evict(p.getNameKey());
}
public void unlock(Project.NameKey key) throws IOException, ConfigInvalidException {
MetaDataUpdate md = metaDataUpdateFactory.create(key);
ProjectConfig projectConfig = projectConfigFactory.read(md);
- Project p = projectConfig.getProject();
- p.setState(ProjectState.ACTIVE);
+ projectConfig.updateProject(project -> project.setState(ProjectState.ACTIVE));
md.setMessage(String.format("Unlock project after renaming the project to %s\n", key.get()));
projectConfig.commit(md);
- projectCache.evict(p);
+ Project p = projectConfig.getProject();
+ projectCache.evict(p.getNameKey());
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
index 9883858..cac0b30 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -17,10 +17,10 @@
import static com.googlesource.gerrit.plugins.renameproject.RenameProject.CANCELLATION_MSG;
import static com.googlesource.gerrit.plugins.renameproject.RenameProject.WARNING_LIMIT;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gerrit.server.project.ProjectState;
@@ -34,6 +34,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
+import java.util.NoSuchElementException;
import java.util.Optional;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.Option;
@@ -88,7 +89,7 @@
}
}
}
- } catch (RestApiException | IOException e) {
+ } catch (NoSuchElementException | RestApiException | IOException e) {
throw die(e);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameLog.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameLog.java
index 6449cba..e37edb1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameLog.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameLog.java
@@ -16,9 +16,9 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.systemstatus.ServerInformation;
import com.google.gerrit.json.OutputFormat;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.AuditEvent;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.audit.AuditService;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
index aae93b2..0cf1ca4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -20,6 +20,9 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
import com.google.common.cache.Cache;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Change.Id;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.api.access.PluginPermission;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -27,9 +30,6 @@
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.extensions.restapi.RestModifyView;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Change.Id;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.extensions.events.PluginEvent;
@@ -64,7 +64,7 @@
public class RenameProject implements RestModifyView<ProjectResource, Input> {
@Override
- public Object apply(ProjectResource resource, Input input)
+ public Response<?> apply(ProjectResource resource, Input input)
throws IOException, AuthException, BadRequestException, ResourceConflictException,
InterruptedException, ConfigInvalidException, RenameRevertException {
assertCanRename(resource, input, Optional.empty());
@@ -151,6 +151,14 @@
}
}
+ private void assertNewNameMatchesRegex(Input input) throws BadRequestException {
+ if (!input.name.matches(cfg.getRenameRegex())) {
+ throw new BadRequestException(
+ String.format(
+ "Name of the repo should match the expected regex: %s", cfg.getRenameRegex()));
+ }
+ }
+
private void assertRenamePermission(ProjectResource rsrc) throws AuthException {
if (!canRename(rsrc)) {
throw new AuthException("Not allowed to rename project");
@@ -195,8 +203,9 @@
pm.ifPresent(progressMonitor -> progressMonitor.beginTask("Checking preconditions"));
assertNewNameNotNull(input);
+ assertNewNameMatchesRegex(input);
assertRenamePermission(rsrc);
- renamePreconditions.assertCanRename(rsrc, new Project.NameKey(input.name));
+ renamePreconditions.assertCanRename(rsrc, Project.nameKey(input.name));
log.debug("Rename preconditions check successful.");
} catch (CannotRenameProjectException e) {
throw new ResourceConflictException(e.getMessage());
@@ -207,7 +216,7 @@
List<Change.Id> changeIds, ProjectResource rsrc, Input input, Optional<ProgressMonitor> pm)
throws InterruptedException, ConfigInvalidException, IOException, RenameRevertException {
Project.NameKey oldProjectKey = rsrc.getNameKey();
- Project.NameKey newProjectKey = new Project.NameKey(input.name);
+ Project.NameKey newProjectKey = Project.nameKey(input.name);
Exception ex = null;
stepsPerformed.clear();
try {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
index 0671c71..484492a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
@@ -14,9 +14,9 @@
package com.googlesource.gerrit.plugins.renameproject;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Change.Id;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Change.Id;
+import com.google.gerrit.entities.Project;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.renameproject.RenameProject.Step;
import com.googlesource.gerrit.plugins.renameproject.cache.CacheRenameHandler;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/cache/CacheRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/cache/CacheRenameHandler.java
index 4526489..5b16875 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/cache/CacheRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/cache/CacheRenameHandler.java
@@ -14,7 +14,7 @@
package com.googlesource.gerrit.plugins.renameproject.cache;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
import com.google.inject.Singleton;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
index 3e30f6e..55ed291 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
@@ -14,31 +14,30 @@
package com.googlesource.gerrit.plugins.renameproject.conditions;
+import static com.google.gerrit.entities.RefNames.REFS_HEADS;
+import static java.util.stream.Collectors.toSet;
+
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.common.ProjectInfo;
-import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.config.AllUsersName;
import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gerrit.server.restapi.project.ListChildProjects;
import com.google.gerrit.server.submit.MergeOpRepoManager;
-import com.google.gerrit.server.submit.SubmoduleException;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubmoduleConflictException;
+import com.google.gerrit.server.submit.SubscriptionGraph;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
import java.io.IOException;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +52,7 @@
public final AllUsersName allUsersName;
private final Provider<ListChildProjects> listChildProjectsProvider;
private final GitRepositoryManager repoManager;
- private final SubmoduleOp.Factory subOpFactory;
+ private final SubscriptionGraph.Factory subscriptionGraphFactory;
private final Provider<MergeOpRepoManager> ormProvider;
@Inject
@@ -62,13 +61,13 @@
AllUsersName allUsersName,
Provider<ListChildProjects> listChildProjectsProvider,
GitRepositoryManager repoManager,
- SubmoduleOp.Factory subOpFactory,
+ SubscriptionGraph.Factory subscriptionGraphFactory,
Provider<MergeOpRepoManager> ormProvider) {
this.allProjectsName = allProjectsName;
this.allUsersName = allUsersName;
this.listChildProjectsProvider = listChildProjectsProvider;
this.repoManager = repoManager;
- this.subOpFactory = subOpFactory;
+ this.subscriptionGraphFactory = subscriptionGraphFactory;
this.ormProvider = ormProvider;
}
@@ -91,17 +90,18 @@
private void assertHasNoChildProjects(ProjectResource rsrc) throws CannotRenameProjectException {
try {
- List<ProjectInfo> children = listChildProjectsProvider.get().apply(rsrc);
- if (!children.isEmpty()) {
+ Response<List<ProjectInfo>> children = listChildProjectsProvider.get().apply(rsrc);
+ if (!children.value().isEmpty()) {
String childrenString =
String.join(
- ", ", children.stream().map(info -> info.name).collect(Collectors.toList()));
+ ", ",
+ children.value().stream().map(info -> info.name).collect(Collectors.toList()));
String message =
String.format("Cannot rename project because it has children: %s", childrenString);
log.error(message);
throw new CannotRenameProjectException(message);
}
- } catch (PermissionBackendException | RestApiException e) {
+ } catch (Exception e) {
throw new CannotRenameProjectException(e);
}
}
@@ -109,19 +109,19 @@
private void assertIsNotSubscribed(Project.NameKey key) throws CannotRenameProjectException {
try (Repository repo = repoManager.openRepository(key);
MergeOpRepoManager orm = ormProvider.get()) {
- Set<Branch.NameKey> branches = new HashSet<>();
- for (Ref ref : repo.getRefDatabase().getRefs(RefNames.REFS_HEADS).values()) {
- branches.add(new Branch.NameKey(key, ref.getName()));
- }
- SubmoduleOp sub = subOpFactory.create(branches, orm);
- for (Branch.NameKey b : branches) {
- if (!sub.superProjectSubscriptionsForSubmoduleBranch(b).isEmpty()) {
+ Set<BranchNameKey> branches =
+ repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
+ .map(ref -> BranchNameKey.create(key, ref.getName()))
+ .collect(toSet());
+ SubscriptionGraph sub = subscriptionGraphFactory.compute(branches, orm);
+ for (BranchNameKey b : branches) {
+ if (sub.hasSuperproject(b)) {
String message = "Cannot rename a project subscribed to by the other projects";
log.error(message);
throw new CannotRenameProjectException(message);
}
}
- } catch (IOException | SubmoduleException e) {
+ } catch (IOException | SubmoduleConflictException e) {
throw new CannotRenameProjectException(e);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
index 2ed4ad5..7afbf11 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
@@ -16,13 +16,13 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Account;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.NotifyConfig.NotifyType;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.ServerInitiated;
import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.account.AccountsUpdate;
-import com.google.gerrit.server.account.ProjectWatches.NotifyType;
import com.google.gerrit.server.account.ProjectWatches.ProjectWatchKey;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.notedb.ChangeNotes;
@@ -122,12 +122,11 @@
private void updateWatchEntries(Project.NameKey newProjectKey)
throws IOException, ConfigInvalidException {
for (AccountState a : accountQueryProvider.get().byWatchedProject(oldProjectKey)) {
- Account.Id accountId = a.getAccount().getId();
- ImmutableMap<ProjectWatchKey, ImmutableSet<NotifyType>> projectWatches =
- a.getProjectWatches();
+ Account.Id accountId = a.account().id();
+ ImmutableMap<ProjectWatchKey, ImmutableSet<NotifyType>> projectWatches = a.projectWatches();
Map<ProjectWatchKey, Set<NotifyType>> newProjectWatches = new HashMap<>();
List<ProjectWatchKey> oldProjectWatches = new ArrayList<>();
- for (ProjectWatchKey watchKey : a.getProjectWatches().keySet()) {
+ for (ProjectWatchKey watchKey : a.projectWatches().keySet()) {
if (oldProjectKey.equals(watchKey.project())) {
newProjectWatches.put(
ProjectWatchKey.create(newProjectKey, watchKey.filter()),
@@ -151,14 +150,14 @@
} catch (ConfigInvalidException e) {
log.error(
"Updating watch entry for user {} in project {} failed. Watch config found invalid.",
- a.getUserName(),
+ a.userName(),
newProjectKey.get(),
e);
throw e;
} catch (IOException e) {
log.error(
"Updating watch entry for user {} in project {} failed.",
- a.getUserName(),
+ a.userName(),
newProjectKey.get(),
e);
throw e;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
index f75b784..81fa156 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
@@ -15,8 +15,8 @@
package com.googlesource.gerrit.plugins.renameproject.database;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.index.change.ChangeIndexer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
index 1572d53..a1ea2b1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
@@ -14,7 +14,7 @@
package com.googlesource.gerrit.plugins.renameproject.fs;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.inject.Inject;
import com.google.inject.Singleton;
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index 6386725..f0d9cf1 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -1,56 +1,7 @@
Build
=====
-This plugin is built with Bazel and two build modes are supported:
-
-* Standalone
-* In Gerrit tree.
-
-Standalone build mode is recommended, as this mode doesn't require local Gerrit
-tree to exist.
-
-## Build standalone
-
-To build the plugin, issue the following command:
-
-```
- bazel build @PLUGIN@
-```
-
-The output is created in
-
-```
- bazel-bin/@PLUGIN@.jar
-```
-
-To package the plugin sources run:
-
-```
- bazel build lib@PLUGIN@__plugin-src.jar
-```
-
-The output is created in:
-
-```
- bazel-bin/lib@PLUGIN@__plugin-src.jar
-```
-
-To execute the tests run:
-
-```
- bazel test //...
-```
-
-This project can be imported into the Eclipse IDE. Execute:
-
-```
- ./tools/eclipse/project.sh
-```
-
-to generate the required files and then import the project.
-
-
-## Build in Gerrit tree
+This plugin can be built with Bazel in the Gerrit tree.
Clone or link this plugin to the plugins directory of Gerrit's source
tree, and issue the command:
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 7a5faeb..80872a1 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -43,3 +43,14 @@
the client waits indefinitely. By default, 0.
* `sshConnectionTimeout` : Timeout for SSH connections in minutes. If 0, there is no timeout, and
the client waits indefinitely. By default, 2 minutes.
+
+Also, this plugin offers a way to restrict the new names of the projects to match an optionally
+configured regex. For example:
+
+```
+ [plugin "@PLUGIN@"]
+ renameRegex = [a-z0-9]+
+```
+
+In this example the new names for projects will be restricted to only non-capital letters and
+numbers.
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java
index aa3776f..02c47c5 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java
@@ -34,10 +34,13 @@
@Test
public void testLockUnlockSucceeds() throws IOException, ConfigInvalidException {
- assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.ACTIVE);
+ assertThat(projectCache.get(project).get().getProject().getState())
+ .isEqualTo(ProjectState.ACTIVE);
lockUnlockInstance.lock(project);
- assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.READ_ONLY);
+ assertThat(projectCache.get(project).get().getProject().getState())
+ .isEqualTo(ProjectState.READ_ONLY);
lockUnlockInstance.unlock(project);
- assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.ACTIVE);
+ assertThat(projectCache.get(project).get().getProject().getState())
+ .isEqualTo(ProjectState.ACTIVE);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
index 41c36d3..c436745 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
@@ -22,23 +22,24 @@
import static org.mockito.Mockito.when;
import com.google.common.cache.Cache;
-import com.google.gerrit.acceptance.GerritConfig;
import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit.Result;
import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.acceptance.UseLocalDisk;
import com.google.gerrit.acceptance.UseSsh;
+import com.google.gerrit.acceptance.config.GerritConfig;
import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
+import com.google.gerrit.entities.Change.Id;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.entities.Project.NameKey;
import com.google.gerrit.extensions.client.ProjectWatchInfo;
-import com.google.gerrit.reviewdb.client.Change.Id;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Project.NameKey;
import com.google.gerrit.server.project.ProjectState;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.renameproject.RenameProject.Input;
import java.io.OutputStream;
import java.util.List;
+import java.util.Optional;
import javax.inject.Named;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.transport.URIish;
@@ -57,6 +58,7 @@
private static final String CACHE_NAME = "changeid_project";
private static final String REPLICATION_OPTION = "--replication";
private static final String URL = "ssh://localhost:29418";
+ private static final String RENAME_REGEX = "[a-zA-Z]+";
@Inject private RequestScopeOperations requestScopeOperations;
@@ -71,10 +73,10 @@
adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + NEW_PROJECT_NAME);
adminSshSession.assertSuccess();
- ProjectState projectState = projectCache.get(new Project.NameKey(NEW_PROJECT_NAME));
- assertThat(projectState).isNotNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isTrue();
assertThat(queryProvider.get().byProject(project)).isEmpty();
- assertThat(queryProvider.get().byProject(new Project.NameKey(NEW_PROJECT_NAME))).isNotEmpty();
+ assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty();
}
@Test
@@ -96,8 +98,8 @@
PLUGIN_NAME + " " + project.get() + " " + NEW_PROJECT_NAME + " " + REPLICATION_OPTION);
adminSshSession.assertSuccess();
- ProjectState projectState = projectCache.get(new Project.NameKey(NEW_PROJECT_NAME));
- assertThat(projectState).isNotNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isTrue();
}
@Test
@@ -108,8 +110,8 @@
adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + newProjectName);
adminSshSession.assertFailure();
- ProjectState projectState = projectCache.get(new Project.NameKey(newProjectName));
- assertThat(projectState).isNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(newProjectName));
+ assertThat(projectState.isPresent()).isFalse();
}
@Test
@@ -119,8 +121,8 @@
adminSshSession.exec(PLUGIN_NAME + " " + allProjects.get() + " " + NEW_PROJECT_NAME);
adminSshSession.assertFailure();
- ProjectState projectState = projectCache.get(new Project.NameKey(NEW_PROJECT_NAME));
- assertThat(projectState).isNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isFalse();
}
@Test
@@ -235,8 +237,8 @@
RestResponse r = renameProjectTo(NEW_PROJECT_NAME);
r.assertOK();
- ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
- assertThat(projectState).isNotNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isTrue();
assertThat(queryProvider.get().byProject(project)).isEmpty();
assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty();
}
@@ -249,8 +251,34 @@
RestResponse r = renameProjectTo(newProjectName);
r.assertBadRequest();
- ProjectState projectState = projectCache.get(Project.nameKey(newProjectName));
- assertThat(projectState).isNull();
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(newProjectName));
+ assertThat(projectState.isPresent()).isFalse();
+ }
+
+ @Test
+ @UseLocalDisk
+ @GerritConfig(name = "plugin.rename-project.renameRegex", value = RENAME_REGEX)
+ public void testRenameViaHttpWithNonMatchingNameFail() throws Exception {
+ createChange();
+ RestResponse r = renameProjectTo(NEW_PROJECT_NAME + "1");
+ r.assertBadRequest();
+
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isFalse();
+ }
+
+ @Test
+ @UseLocalDisk
+ @GerritConfig(name = "plugin.rename-project.renameRegex", value = RENAME_REGEX)
+ public void testRenameViaHttpWithMatchingNameSuccess() throws Exception {
+ createChange();
+ RestResponse r = renameProjectTo(NEW_PROJECT_NAME);
+ r.assertOK();
+
+ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME));
+ assertThat(projectState.isPresent()).isTrue();
+ assertThat(queryProvider.get().byProject(project)).isEmpty();
+ assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty();
}
private RestResponse renameProjectTo(String newName) throws Exception {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
index f77d80e..8330748 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
@@ -21,10 +21,10 @@
import com.google.gerrit.acceptance.PushOneCommit.Result;
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.acceptance.UseLocalDisk;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.api.changes.ChangeApi;
import com.google.gerrit.extensions.common.ChangeInfo;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gerrit.server.project.ProjectState;
import com.googlesource.gerrit.plugins.renameproject.RenameProject.Step;
@@ -55,7 +55,7 @@
revertRenameProject = plugin.getSysInjector().getInstance(RevertRenameProject.class);
oldProjectKey = project;
- newProjectKey = new Project.NameKey(NEW_PROJECT_NAME);
+ newProjectKey = Project.nameKey(NEW_PROJECT_NAME);
pm = Optional.of(Mockito.mock(ProgressMonitor.class));
@@ -126,22 +126,26 @@
}
private void assertReverted() throws Exception {
- ProjectState oldProjectState = projectCache.get(oldProjectKey);
- assertThat(oldProjectState).isNotNull();
+ evictCaches();
- ProjectState newProjectState = projectCache.get(newProjectKey);
- assertThat(newProjectState).isNull();
+ Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey);
+ assertThat(oldProjectState.isPresent()).isTrue();
+
+ Optional<ProjectState> newProjectState = projectCache.get(newProjectKey);
+ assertThat(newProjectState.isPresent()).isFalse();
assertThat(queryProvider.get().byProject(oldProjectKey)).isNotEmpty();
assertThat(queryProvider.get().byProject(newProjectKey)).isEmpty();
}
private void assertRenamed(Result result) throws Exception {
- ProjectState oldProjectState = projectCache.get(oldProjectKey);
- assertThat(oldProjectState).isNull();
+ evictCaches();
- ProjectState newProjectState = projectCache.get(newProjectKey);
- assertThat(newProjectState).isNotNull();
+ Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey);
+ assertThat(oldProjectState.isPresent()).isFalse();
+
+ Optional<ProjectState> newProjectState = projectCache.get(newProjectKey);
+ assertThat(newProjectState.isPresent()).isTrue();
if (renameProject.getStepsPerformed().contains(Step.DATABASE)) {
ChangeApi changeApi = gApi.changes().id(NEW_PROJECT_NAME, result.getChange().getId().get());
@@ -153,4 +157,9 @@
assertThat(queryProvider.get().byProject(oldProjectKey)).isEmpty();
}
}
+
+ private void evictCaches() {
+ projectCache.evict(oldProjectKey);
+ projectCache.evict(newProjectKey);
+ }
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
index 68515c4..f6798b1 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/SubmoduleUtil.java
@@ -16,8 +16,8 @@
import static com.google.common.truth.Truth.assertThat;
-import com.google.gerrit.common.data.SubscribeSection;
-import com.google.gerrit.reviewdb.client.Project.NameKey;
+import com.google.gerrit.entities.Project.NameKey;
+import com.google.gerrit.entities.SubscribeSection;
import com.google.gerrit.server.git.meta.MetaDataUpdate;
import com.google.gerrit.server.git.meta.MetaDataUpdate.Server;
import com.google.gerrit.server.project.ProjectCache;
@@ -54,12 +54,12 @@
throws Exception {
try (MetaDataUpdate md = metaDataUpdateFactory.create(sub)) {
md.setMessage("Added superproject subscription");
- SubscribeSection s;
+ SubscribeSection.Builder s;
ProjectConfig pc = projectConfigFactory.read(md);
if (pc.getSubscribeSections().containsKey(superName)) {
- s = pc.getSubscribeSections().get(superName);
+ s = pc.getSubscribeSections().get(superName).toBuilder();
} else {
- s = new SubscribeSection(superName);
+ s = SubscribeSection.builder(superName);
}
String refspec;
if (superBranch == null) {
@@ -72,11 +72,11 @@
} else {
s.addMultiMatchRefSpec(refspec);
}
- pc.addSubscribeSection(s);
+ pc.addSubscribeSection(s.build());
ObjectId oldId = pc.getRevision();
ObjectId newId = pc.commit(md);
assertThat(newId).isNotEqualTo(oldId);
- projectCache.evict(pc.getProject());
+ projectCache.evict(pc.getName());
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
index e42e550..049db6d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
@@ -17,17 +17,20 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.common.ProjectInfo;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.config.AllProjectsName;
+import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.config.AllUsersName;
+import com.google.gerrit.server.config.AllUsersNameProvider;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.ProjectResource;
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.restapi.project.ListChildProjects;
import com.google.gerrit.server.submit.MergeOpRepoManager;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubscriptionGraph;
import com.google.inject.Provider;
import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
import java.util.ArrayList;
@@ -43,11 +46,8 @@
@RunWith(MockitoJUnitRunner.class)
public class RenamePreconditionsTest {
- @Mock private AllProjectsName allProjects;
- @Mock private AllUsersName allUsersName;
@Mock private Provider<ListChildProjects> listChildProjectsProvider;
@Mock private GitRepositoryManager repoManager;
- @Mock private SubmoduleOp.Factory subOpFactory;
@Mock private Provider<MergeOpRepoManager> ormProvider;
@Mock private RenamePreconditions preconditions;
@Mock private ObjectDatabase objDb;
@@ -55,13 +55,18 @@
@Mock private CurrentUser user;
@Mock private Repository repo;
@Mock private ListChildProjects listChildProjects;
+ @Mock private SubscriptionGraph.Factory subscriptionGraphFactory;
+ private AllProjectsName allProjects;
+ private AllUsersName allUsersName;
private ProjectResource oldRsrc;
- private List<ProjectInfo> children = new ArrayList<>();
- private Project.NameKey newProjectKey = new Project.NameKey("newProject");
+ private Response<List<ProjectInfo>> children = Response.ok(new ArrayList<>());
+ private Project.NameKey newProjectKey = Project.nameKey("newProject");
@Before
public void setUp() throws Exception {
+ allProjects = new AllProjectsName(AllProjectsNameProvider.DEFAULT);
+ allUsersName = new AllUsersName(AllUsersNameProvider.DEFAULT);
oldRsrc = new ProjectResource(control, user);
when(repoManager.openRepository(newProjectKey)).thenReturn(repo);
when(repo.getObjectDatabase()).thenReturn(objDb);
@@ -71,7 +76,7 @@
allUsersName,
listChildProjectsProvider,
repoManager,
- subOpFactory,
+ subscriptionGraphFactory,
ormProvider);
}
@@ -84,7 +89,7 @@
@Test(expected = CannotRenameProjectException.class)
public void testAssertCannotRenameAllProjects() throws Exception {
- Project oldProject = new Project(allProjects);
+ Project oldProject = Project.builder(allProjects).build();
when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
when(objDb.exists()).thenReturn(false);
@@ -93,7 +98,7 @@
@Test(expected = CannotRenameProjectException.class)
public void testAssertCannotRenameAllUsers() throws Exception {
- Project oldProject = new Project(allUsersName);
+ Project oldProject = Project.builder(allUsersName).build();
when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
when(objDb.exists()).thenReturn(false);
@@ -102,13 +107,13 @@
@Test(expected = CannotRenameProjectException.class)
public void testAssertCannotRenameHasChildren() throws Exception {
- Project oldProject = new Project(new Project.NameKey("oldProject"));
+ Project oldProject = Project.builder(Project.nameKey("oldProject")).build();
when(oldRsrc.getNameKey()).thenReturn(oldProject.getNameKey());
when(objDb.exists()).thenReturn(false);
when(listChildProjectsProvider.get()).thenReturn(listChildProjects);
ProjectInfo projInfo = mock(ProjectInfo.class);
- children.add(projInfo);
+ children.value().add(projInfo);
when(listChildProjects.apply(oldRsrc)).thenReturn(children);
preconditions.assertCanRename(oldRsrc, newProjectKey);
diff --git a/tools/BUILD b/tools/BUILD
deleted file mode 100644
index c5ed0b7..0000000
--- a/tools/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file required by Bazel
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD
deleted file mode 100644
index c5ed0b7..0000000
--- a/tools/bzl/BUILD
+++ /dev/null
@@ -1 +0,0 @@
-# Empty file required by Bazel
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
deleted file mode 100644
index c921d01..0000000
--- a/tools/bzl/classpath.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- _classpath_collector = "classpath_collector",
-)
-
-classpath_collector = _classpath_collector
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
deleted file mode 100644
index 97307bd..0000000
--- a/tools/bzl/junit.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- _junit_tests = "junit_tests",
-)
-
-junit_tests = _junit_tests
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
deleted file mode 100644
index 35ea8ce..0000000
--- a/tools/bzl/maven_jar.bzl
+++ /dev/null
@@ -1,3 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _maven_jar = "maven_jar")
-
-maven_jar = _maven_jar
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
deleted file mode 100644
index 4d2dbdd..0000000
--- a/tools/bzl/plugin.bzl
+++ /dev/null
@@ -1,10 +0,0 @@
-load(
- "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- _gerrit_plugin = "gerrit_plugin",
- _plugin_deps = "PLUGIN_DEPS",
- _plugin_test_deps = "PLUGIN_TEST_DEPS",
-)
-
-gerrit_plugin = _gerrit_plugin
-PLUGIN_DEPS = _plugin_deps
-PLUGIN_TEST_DEPS = _plugin_test_deps
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD
deleted file mode 100644
index 9d74cff..0000000
--- a/tools/eclipse/BUILD
+++ /dev/null
@@ -1,9 +0,0 @@
-load("//tools/bzl:classpath.bzl", "classpath_collector")
-
-classpath_collector(
- name = "main_classpath_collect",
- testonly = 1,
- deps = [
- "//:rename-project__plugin_test_deps",
- ],
-)
diff --git a/tools/eclipse/project.sh b/tools/eclipse/project.sh
deleted file mode 100755
index 3003cc2..0000000
--- a/tools/eclipse/project.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2018 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.
-
-path=$(bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project \
- --output location | sed s/BUILD:.*//)
-${path}project.py -n rename-project -r . "$@"
diff --git a/tools/sonar/sonar.sh b/tools/sonar/sonar.sh
deleted file mode 100755
index 8df06d3..0000000
--- a/tools/sonar/sonar.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2018 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.
-
-`bazel query @com_googlesource_gerrit_bazlets//tools/sonar:sonar --output location | sed s/BUILD:.*//`sonar.py
diff --git a/tools/workspace_status.py b/tools/workspace_status.py
deleted file mode 100644
index 5729ce1..0000000
--- a/tools/workspace_status.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/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_RENAME-PROJECT_LABEL %s" % revision())