Query references by multiple prefixes
Support multiple prefixes when querying references to allow implementor to minimize number of RPC calls. Change-Id: I5f822fd7eaf9756b44750080d3056de138b64f4a Signed-off-by: Minh Thai <mthai@google.com>
This commit is contained in:
parent
751abf4a50
commit
a51e686e47
|
@ -333,4 +333,17 @@ public void testGetRefsByPrefix() throws IOException {
|
|||
assertEquals(1, refs.size());
|
||||
checkContainsRef(refs, db.exactRef("refs/heads/prefix/a"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRefsByPrefixes() throws IOException {
|
||||
List<Ref> refs = db.getRefDatabase().getRefsByPrefix();
|
||||
assertEquals(0, refs.size());
|
||||
|
||||
refs = db.getRefDatabase().getRefsByPrefix("refs/heads/p",
|
||||
"refs/tags/A");
|
||||
assertEquals(3, refs.size());
|
||||
checkContainsRef(refs, db.exactRef("refs/heads/pa"));
|
||||
checkContainsRef(refs, db.exactRef("refs/heads/prefix/a"));
|
||||
checkContainsRef(refs, db.exactRef("refs/tags/A"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -414,6 +414,31 @@ public List<Ref> getRefsByPrefix(String prefix) throws IOException {
|
|||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns refs whose names start with one of the given prefixes.
|
||||
* <p>
|
||||
* The default implementation uses {@link #getRefsByPrefix(String)}.
|
||||
* Implementors of {@link RefDatabase} should override this method directly
|
||||
* if a better implementation is possible.
|
||||
*
|
||||
* @param prefixes
|
||||
* strings that names of refs should start with.
|
||||
* @return immutable list of refs whose names start with one of
|
||||
* {@code prefixes}. Refs can be unsorted and may contain
|
||||
* duplicates if the prefixes overlap.
|
||||
* @throws java.io.IOException
|
||||
* the reference space cannot be accessed.
|
||||
* @since 5.1
|
||||
*/
|
||||
@NonNull
|
||||
public List<Ref> getRefsByPrefix(String... prefixes) throws IOException {
|
||||
List<Ref> result = new ArrayList<>();
|
||||
for (String prefix : prefixes) {
|
||||
result.addAll(getRefsByPrefix(prefix));
|
||||
}
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if any refs exist in the ref database.
|
||||
* <p>
|
||||
|
|
Loading…
Reference in New Issue