diff options
author | Gal Paikin <paiking@google.com> | 2020-11-30 15:57:06 +0100 |
---|---|---|
committer | Gal Paikin <paiking@google.com> | 2021-01-27 02:22:45 -0500 |
commit | a6b90b7ec5c238692dc323e25ef927e4433edb1d (patch) | |
tree | 0ec4bcfdcf40f64137b351149777a4ad4b4a5f92 /org.eclipse.jgit.http.test/src/org | |
parent | 68b95afc706bdac78443f1b7c17c48bf57735f2d (diff) | |
download | jgit-a6b90b7ec5c238692dc323e25ef927e4433edb1d.tar.gz jgit-a6b90b7ec5c238692dc323e25ef927e4433edb1d.zip |
Add getsRefsByPrefixWithSkips (excluding prefixes) to ReftableDatabase
We sometimes want to get all the refs except specific prefixes,
similarly to getRefsByPrefix that gets all the refs of a specific
prefix.
We now create a new method that gets all refs matching a prefix except a
set of specific prefixes.
One use-case is for Gerrit to be able to get all the refs except
refs/changes; in Gerrit we often have lots of refs/changes, but very
little other refs. Currently, to get all the refs except refs/changes we
need to get all the refs and then filter the refs/changes, which is very
inefficient. With this method, we can simply skip the unneeded prefix so
that we don't have to go over all the elements.
RefDirectory still uses the inefficient implementation, since there
isn't a simple way to use Refcursor to achieve the efficient
implementation (as done in ReftableDatabase).
Signed-off-by: Gal Paikin <paiking@google.com>
Change-Id: I8c5db581acdeb6698e3d3a2abde8da32f70c854c
Diffstat (limited to 'org.eclipse.jgit.http.test/src/org')
-rw-r--r-- | org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java index 80cbe8738c..4167b038e1 100644 --- a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java +++ b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java @@ -85,6 +85,17 @@ class RefsUnreadableInMemoryRepository extends InMemoryRepository { /** {@inheritDoc} */ @Override + public List<Ref> getRefsByPrefixWithExclusions(String include, Set<String> excludes) + throws IOException { + if (failing) { + throw new IOException("disk failed, no refs found"); + } + + return super.getRefsByPrefixWithExclusions(include, excludes); + } + + /** {@inheritDoc} */ + @Override public Set<Ref> getTipsWithSha1(ObjectId id) throws IOException { if (failing) { throw new IOException("disk failed, no refs found"); |