diff options
author | Dave Borowitz <dborowitz@google.com> | 2017-07-05 09:57:01 -0400 |
---|---|---|
committer | Dave Borowitz <dborowitz@google.com> | 2017-07-05 15:51:26 -0400 |
commit | 28adcce8622814e6b0ecb33168eae1846829390d (patch) | |
tree | f697c5633aac4a38e405e47616f412e259840853 | |
parent | 1968b2006617541f9f2b56a9e341bdd00987dcdf (diff) | |
download | jgit-28adcce8622814e6b0ecb33168eae1846829390d.tar.gz jgit-28adcce8622814e6b0ecb33168eae1846829390d.zip |
BatchRefUpdate: Clarify some ref prefix calls
Inline the old addRefToPrefixes, since it was just a glorified addAll.
Split getPrefixes into a variant, addPrefixesTo, that doesn't allocate a
small Collection on every invocation. Use this in the tight loop of
getTakenPrefixes.
Change-Id: I25cc7feef0c8e312820d85b7ed48559da49b83d2
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java index 3f6995de83..3043d4fcda 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java @@ -462,7 +462,7 @@ public class BatchRefUpdate { break SWITCH; } ru.setCheckConflicting(false); - addRefToPrefixes(takenPrefixes, cmd.getRefName()); + takenPrefixes.addAll(getPrefixes(cmd.getRefName())); takenNames.add(cmd.getRefName()); cmd.setResult(ru.update(walk)); } @@ -523,29 +523,26 @@ public class BatchRefUpdate { execute(walk, monitor, null); } - private static Collection<String> getTakenPrefixes( - final Collection<String> names) { + private static Collection<String> getTakenPrefixes(Collection<String> names) { Collection<String> ref = new HashSet<>(); - for (String name : names) - ref.addAll(getPrefixes(name)); - return ref; - } - - private static void addRefToPrefixes(Collection<String> prefixes, - String name) { - for (String prefix : getPrefixes(name)) { - prefixes.add(prefix); + for (String name : names) { + addPrefixesTo(name, ref); } + return ref; } static Collection<String> getPrefixes(String s) { Collection<String> ret = new HashSet<>(); + addPrefixesTo(s, ret); + return ret; + } + + static void addPrefixesTo(String s, Collection<String> out) { int p1 = s.indexOf('/'); while (p1 > 0) { - ret.add(s.substring(0, p1)); + out.add(s.substring(0, p1)); p1 = s.indexOf('/', p1 + 1); } - return ret; } /** |