summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Wolf <thomas.wolf@paranor.ch>2022-02-11 17:18:20 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2022-02-14 10:45:15 +0100
commit63c1c6e4d84105f3cc41d6b0e32cb9e6e2f6f82e (patch)
treeb4b456be23a527e0c3eb05ff3e3208074d28d857
parent855a734875c2f178a8adfd0789527afc8754117f (diff)
downloadjgit-63c1c6e4d84105f3cc41d6b0e32cb9e6e2f6f82e.tar.gz
jgit-63c1c6e4d84105f3cc41d6b0e32cb9e6e2f6f82e.zip
Transport: load all refs only if push refspecs have wildcards
There is no need to load all refs if there are no wildcard push refspecs. Load them lazily on the first wildcard refspec encountered instead of loading them up-front. Change-Id: I6d0e981f9ed4997dbdefeb7f83f37ff4f33e06a5 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
index 5b781ac25f..bfe26d9808 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/Transport.java
@@ -2,7 +2,7 @@
* Copyright (C) 2008, 2009 Google Inc.
* Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com>
* Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
- * Copyright (C) 2008, 2020 Shawn O. Pearce <spearce@spearce.org> and others
+ * Copyright (C) 2008, 2022 Shawn O. Pearce <spearce@spearce.org> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -656,14 +656,18 @@ public abstract class Transport implements AutoCloseable {
private static Collection<RefSpec> expandPushWildcardsFor(
final Repository db, final Collection<RefSpec> specs)
throws IOException {
- final List<Ref> localRefs = db.getRefDatabase().getRefs();
final Collection<RefSpec> procRefs = new LinkedHashSet<>();
+ List<Ref> localRefs = null;
for (RefSpec spec : specs) {
if (spec.isWildcard()) {
+ if (localRefs == null) {
+ localRefs = db.getRefDatabase().getRefs();
+ }
for (Ref localRef : localRefs) {
- if (spec.matchSource(localRef))
+ if (spec.matchSource(localRef)) {
procRefs.add(spec.expandFromSource(localRef));
+ }
}
} else {
procRefs.add(spec);