Merge "Filter out RO GitHub repositories for replication"
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/RepositoriesListController.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/RepositoriesListController.java
index 45198ab..87cc52e 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/RepositoriesListController.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/RepositoriesListController.java
@@ -30,6 +30,8 @@
import org.kohsuke.github.GHRepository;
import org.kohsuke.github.PagedIterable;
import org.kohsuke.github.PagedIterator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
@@ -39,6 +41,7 @@
@Singleton
public class RepositoriesListController implements VelocityController {
+ private static final Logger log = LoggerFactory.getLogger(RepositoriesListController.class);
private final ProjectCache projects;
private final GitHubConfig config;
@@ -63,18 +66,24 @@
while (repoIter.hasNext() && numRepos < config.repositoryListLimit) {
GHRepository ghRepository = repoIter.next();
- JsonObject repository = new JsonObject();
- String projectName = organisation + "/" + ghRepository.getName();
- if (projects.get(Project.NameKey.parse(projectName)) == null) {
- repository.add("name", new JsonPrimitive(ghRepository.getName()));
- repository.add("organisation", new JsonPrimitive(organisation));
- repository.add(
- "description",
- new JsonPrimitive(
- Strings.nullToEmpty(ghRepository.getDescription())));
- repository.add("private", new JsonPrimitive(ghRepository.isPrivate()));
- jsonRepos.add(repository);
- numRepos++;
+ if (ghRepository.hasPushAccess() && ghRepository.hasPullAccess()) {
+ JsonObject repository = new JsonObject();
+ String projectName = organisation + "/" + ghRepository.getName();
+ if (projects.get(Project.NameKey.parse(projectName)) == null) {
+ repository.add("name", new JsonPrimitive(ghRepository.getName()));
+ repository.add("organisation", new JsonPrimitive(organisation));
+ repository.add(
+ "description",
+ new JsonPrimitive(Strings.nullToEmpty(ghRepository
+ .getDescription())));
+ repository
+ .add("private", new JsonPrimitive(ghRepository.isPrivate()));
+ jsonRepos.add(repository);
+ numRepos++;
+ }
+ } else {
+ log.warn("Skipping repository {} because user {} has no push/pull access to it",
+ ghRepository.getName(), user.getUserName());
}
}