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());
       }
     }