Merge branch 'stable-2.10' * stable-2.10: Update plugin API version to 2.10.5 and adapt to JGit API changes Change-Id: Idc1846b58871d10424732fd7a1dfff842cd8e05d Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/.buckconfig b/.buckconfig new file mode 100644 index 0000000..3addd70 --- /dev/null +++ b/.buckconfig
@@ -0,0 +1,14 @@ +[alias] + reviewers-by-blame = //:reviewers-by-blame + plugin = //:reviewers-by-blame + +[java] + src_roots = java, resources + +[project] + ignore = .git + +[cache] + mode = dir + dir = buck-out/cache +
diff --git a/.gitignore b/.gitignore index 194bedc..b4277e3 100644 --- a/.gitignore +++ b/.gitignore
@@ -1,5 +1,10 @@ +/.buckversion +/.buckd +/.watchmanconfig +/buck-out +/bucklets /target /.classpath /.project /.settings/org.maven.ide.eclipse.prefs -/.settings/org.eclipse.m2e.core.prefs \ No newline at end of file +/.settings/org.eclipse.m2e.core.prefs
diff --git a/BUCK b/BUCK index af807f2..15df39e 100644 --- a/BUCK +++ b/BUCK
@@ -1,3 +1,5 @@ +include_defs('//bucklets/gerrit_plugin.bucklet') + gerrit_plugin( name = 'reviewers-by-blame', srcs = glob(['src/main/java/**/*.java']), @@ -6,6 +8,8 @@ 'Implementation-Title: Reviewers By Blame', 'Implementation-URL: https://gerrit.googlesource.com/plugins/reviewers-by-blame', 'Gerrit-PluginName: reviewers-by-blame', + 'Gerrit-ApiType: plugin', + 'Gerrit-ApiVersion: 2.11.1', 'Gerrit-Module: com.googlesource.gerrit.plugins.reviewersbyblame.ReviewersByBlameModule', ], )
diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..55773d3 --- /dev/null +++ b/VERSION
@@ -0,0 +1,5 @@ +# Used by BUCK to include "Implementation-Version" in plugin Manifest. +# If this file doesn't exist the output of 'git describe' is used +# instead. +PLUGIN_VERSION = '2.11.1' +
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK new file mode 100644 index 0000000..c86049a --- /dev/null +++ b/lib/gerrit/BUCK
@@ -0,0 +1,12 @@ +include_defs('//bucklets/maven_jar.bucklet') + +VER = '2.11.1' +REPO = MAVEN_CENTRAL + +maven_jar( + name = 'plugin-api', + id = 'com.google.gerrit:gerrit-plugin-api:' + VER, + attach_source = False, + repository = REPO, + license = 'Apache2.0', +)
diff --git a/pom.xml b/pom.xml deleted file mode 100644 index dcfe2d8..0000000 --- a/pom.xml +++ /dev/null
@@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -Copyright (C) 2013 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. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>com.googlesource.gerrit.plugins.reviewersbyblame</groupId> - <artifactId>reviewersbyblame</artifactId> - <packaging>jar</packaging> - <version>2.10.5</version> - <name>reviewersbyblame</name> - - <properties> - <Gerrit-ApiType>plugin</Gerrit-ApiType> - <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion> - </properties> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>2.4</version> - <configuration> - <archive> - <manifestEntries> - <Gerrit-PluginName>reviewers-by-blame</Gerrit-PluginName> - <Gerrit-Module>com.googlesource.gerrit.plugins.reviewersbyblame.ReviewersByBlameModule</Gerrit-Module> - <Implementation-Vendor>Gerrit Code Review</Implementation-Vendor> - <Implementation-URL>http://code.google.com/p/gerrit/</Implementation-URL> - - <Implementation-Title>${Gerrit-ApiType} ${project.artifactId}</Implementation-Title> - <Implementation-Version>${project.version}</Implementation-Version> - - <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType> - <Gerrit-ApiVersion>${Gerrit-ApiVersion}</Gerrit-ApiVersion> - </manifestEntries> - </archive> - </configuration> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>2.3.2</version> - <configuration> - <source>1.7</source> - <target>1.7</target> - <encoding>UTF-8</encoding> - </configuration> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>com.google.gerrit</groupId> - <artifactId>gerrit-${Gerrit-ApiType}-api</artifactId> - <version>${Gerrit-ApiVersion}</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.8.1</version> - <scope>test</scope> - </dependency> - </dependencies> - - <description>Find possible reviewers using git blame</description> - <organization> - <name>Spotify AB</name> - </organization> -</project>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ChangeUpdatedListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ChangeUpdatedListener.java index 6466974..d21d5c3 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ChangeUpdatedListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ChangeUpdatedListener.java
@@ -14,19 +14,7 @@ package com.googlesource.gerrit.plugins.reviewersbyblame; -import java.io.IOException; - -import org.eclipse.jgit.errors.IncorrectObjectTypeException; -import org.eclipse.jgit.errors.MissingObjectException; -import org.eclipse.jgit.errors.RepositoryNotFoundException; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.revwalk.RevWalk; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gerrit.common.ChangeListener; +import com.google.gerrit.common.EventListener; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; @@ -35,7 +23,7 @@ import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.PluginConfigFactory; -import com.google.gerrit.server.events.ChangeEvent; +import com.google.gerrit.server.events.Event; import com.google.gerrit.server.events.PatchSetCreatedEvent; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.WorkQueue; @@ -48,7 +36,19 @@ import com.google.inject.Provider; import com.google.inject.ProvisionException; -class ChangeUpdatedListener implements ChangeListener { +import org.eclipse.jgit.errors.IncorrectObjectTypeException; +import org.eclipse.jgit.errors.MissingObjectException; +import org.eclipse.jgit.errors.RepositoryNotFoundException; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevWalk; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +class ChangeUpdatedListener implements EventListener { private static final Logger log = LoggerFactory .getLogger(ChangeUpdatedListener.class); @@ -82,7 +82,7 @@ } @Override - public void onChangeEvent(ChangeEvent event) { + public void onEvent(Event event) { if (!(event instanceof PatchSetCreatedEvent)) { return; } @@ -140,6 +140,7 @@ reviewersByBlameFactory.create(commit, change, ps, maxReviewers, git); workQueue.getDefaultQueue().submit(new Runnable() { + @Override public void run() { RequestContext old = tl.setContext(new RequestContext() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlame.java b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlame.java index 8bf16f8..bc14c9d 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlame.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlame.java
@@ -14,22 +14,6 @@ package com.googlesource.gerrit.plugins.reviewersbyblame; -import java.io.IOException; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.eclipse.jgit.api.BlameCommand; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.blame.BlameResult; -import org.eclipse.jgit.diff.Edit; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.common.collect.Maps; import com.google.common.collect.Ordering; import com.google.common.collect.Sets; @@ -47,11 +31,26 @@ import com.google.gerrit.server.patch.PatchListCache; import com.google.gerrit.server.patch.PatchListEntry; import com.google.gerrit.server.patch.PatchListNotAvailableException; -import com.google.gerrit.server.project.ProjectCache; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; +import org.eclipse.jgit.api.BlameCommand; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.blame.BlameResult; +import org.eclipse.jgit.diff.Edit; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + public class ReviewersByBlame implements Runnable { @@ -80,7 +79,7 @@ final AccountCache accountCache, final ChangesCollection changes, final Provider<PostReviewers> reviewersProvider, - final PatchListCache patchListCache, final ProjectCache projectCache, + final PatchListCache patchListCache, @Assisted final RevCommit commit, @Assisted final Change change, @Assisted final PatchSet ps, @Assisted final int maxReviewers, @Assisted final Repository repo) { @@ -158,6 +157,7 @@ Set<Account.Id> topReviewers = Sets.newHashSet(); List<Entry<Account, Integer>> entries = Ordering.from(new Comparator<Entry<Account, Integer>>() { + @Override public int compare(Entry<Account, Integer> first, Entry<Account, Integer> second) { return first.getValue() - second.getValue();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlameModule.java b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlameModule.java index ea05a46..9ef5390 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlameModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewersbyblame/ReviewersByBlameModule.java
@@ -14,7 +14,7 @@ package com.googlesource.gerrit.plugins.reviewersbyblame; -import com.google.gerrit.common.ChangeListener; +import com.google.gerrit.common.EventListener; import com.google.gerrit.extensions.annotations.Exports; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.server.config.FactoryModule; @@ -23,7 +23,7 @@ public class ReviewersByBlameModule extends FactoryModule { @Override protected void configure() { - DynamicSet.bind(binder(), ChangeListener.class).to( + DynamicSet.bind(binder(), EventListener.class).to( ChangeUpdatedListener.class); factory(ReviewersByBlame.Factory.class); bind(ProjectConfigEntry.class)
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md index 6763a3a..fb9dc40 100644 --- a/src/main/resources/Documentation/build.md +++ b/src/main/resources/Documentation/build.md
@@ -3,17 +3,64 @@ This plugin is built with Buck. -Clone or link this plugin to the plugins directory of Gerrit's source -tree, and issue the command: +Buck +---- + +Two build modes are supported: Standalone and in Gerrit tree. +The standalone build mode is recommended, as this mode doesn't require +the Gerrit tree to exist locally. + +### Build standalone + +Clone bucklets library: ``` - buck build plugins/reviewers-by-blame + git clone https://gerrit.googlesource.com/bucklets + +``` +and link it to @PLUGIN@ plugin directory: + +``` + cd @PLUGIN@ && ln -s ../bucklets . +``` + +Add link to the .buckversion file: + +``` + cd @PLUGIN@ && ln -s bucklets/buckversion .buckversion +``` + +Add link to the .watchmanconfig file: +``` + cd @PLUGIN@ && ln -s bucklets/watchmanconfig .watchmanconfig +``` + +To build the plugin, issue the following command: + + +``` + buck build plugin ``` The output is created in ``` - buck-out/gen/plugins/reviewers-by-blame/reviewers-by-blame.jar + buck-out/gen/@PLUGIN@.jar +``` + +### Build in Gerrit tree + +Clone or link this plugin to the plugins directory of Gerrit's source +tree, and issue the command: + +``` + buck build plugins/@PLUGIN@ +``` + +The output is created in + +``` + buck-out/gen/plugins/@PLUGIN@/@PLUGIN@.jar ``` This project can be imported into the Eclipse IDE: