Merge "Reuse Gerrit code for head update" into stable-3.3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/ExcludedRefsFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/ExcludedRefsFilter.java
index f2e4ab3..63755b4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/ExcludedRefsFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/ExcludedRefsFilter.java
@@ -24,21 +24,8 @@
 
 @Singleton
 public class ExcludedRefsFilter extends RefsFilter {
-  @Inject
-  public ExcludedRefsFilter(ReplicationConfig replicationConfig) {
-    super(replicationConfig);
-  }
-
-  @Override
-  protected List<String> getRefNamePatterns(Config cfg) {
-    return ImmutableList.<String>builder()
-        .addAll(getDefaultExcludeRefPatterns())
-        .addAll(ImmutableList.copyOf(cfg.getStringList("replication", null, "excludeRefs")))
-        .build();
-  }
-
-  private List<String> getDefaultExcludeRefPatterns() {
-    return ImmutableList.of(
+  public static String[] DEFAULT_REPLICATION_EXCLUDE_REFS =
+      new String[] {
         RefNames.REFS_USERS + "*",
         RefNames.REFS_CONFIG,
         RefNames.REFS_SEQUENCES + "*",
@@ -46,6 +33,20 @@
         RefNames.REFS_GROUPS + "*",
         RefNames.REFS_GROUPNAMES,
         RefNames.REFS_CACHE_AUTOMERGE + "*",
-        RefNames.REFS_STARRED_CHANGES + "*");
+        RefNames.REFS_STARRED_CHANGES + "*"
+      };
+
+  @Inject
+  public ExcludedRefsFilter(ReplicationConfig replicationConfig) {
+    super(replicationConfig);
+  }
+
+  @Override
+  protected List<String> getRefNamePatterns(Config cfg) {
+    String[] replicationExcludeRefs = cfg.getStringList("replication", null, "excludeRefs");
+    if (replicationExcludeRefs.length == 0) {
+      replicationExcludeRefs = DEFAULT_REPLICATION_EXCLUDE_REFS;
+    }
+    return ImmutableList.copyOf(replicationExcludeRefs);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/RefsFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/RefsFilter.java
index 7ec19ea..7ab44f9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/RefsFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/RefsFilter.java
@@ -48,9 +48,6 @@
       throw new IllegalArgumentException(
           String.format("Ref name cannot be null or empty, but was %s", refName));
     }
-    if (refsPatterns.isEmpty()) {
-      return true;
-    }
 
     for (String pattern : refsPatterns) {
       if (matchesPattern(refName, pattern)) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/SyncRefsFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/SyncRefsFilter.java
index a069935..7d004f5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/SyncRefsFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/filter/SyncRefsFilter.java
@@ -30,6 +30,10 @@
 
   @Override
   protected List<String> getRefNamePatterns(Config cfg) {
-    return ImmutableList.copyOf(cfg.getStringList("replication", null, "syncRefs"));
+    String[] replicationSyncRefs = cfg.getStringList("replication", null, "syncRefs");
+    if (replicationSyncRefs.length == 0) {
+      replicationSyncRefs = new String[] {"*"};
+    }
+    return ImmutableList.copyOf(replicationSyncRefs);
   }
 }
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 68c9001..b2470a4 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -169,7 +169,7 @@
     treated as single ref matches. So `foo/bar` matches only
     the ref `foo/bar`, but no other refs.
 
-    Following refs are always excluded from the git fetch calls:
+    By default, the following refs are excluded from the git fetch calls:
     - refs/users/*
     - refs/meta/config
     - refs/sequences/*
@@ -179,8 +179,6 @@
     - refs/cache-automerge/*
     - refs/starred-changes/*
 
-    By default, all other refs are included.
-
     Note that if you are using @PLUGIN@ together with multi-site, you should
     explicitly exclude `refs/multi-site/version` from being replicated.