DFS: Allow other RefDatabase implementations
Permit a DfsRepository implementation to use a different RefDatabase than DfsRefDatabase. Change-Id: Ia263285f547bde1943993cc994d0222185021a16
This commit is contained in:
parent
4c574b39b4
commit
f0d634eed7
|
@ -70,6 +70,7 @@
|
|||
import org.eclipse.jgit.lib.ObjectIdSet;
|
||||
import org.eclipse.jgit.lib.ProgressMonitor;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.RefDatabase;
|
||||
import org.eclipse.jgit.revwalk.RevWalk;
|
||||
import org.eclipse.jgit.storage.pack.PackConfig;
|
||||
import org.eclipse.jgit.storage.pack.PackStatistics;
|
||||
|
@ -78,9 +79,7 @@
|
|||
/** Repack and garbage collect a repository. */
|
||||
public class DfsGarbageCollector {
|
||||
private final DfsRepository repo;
|
||||
|
||||
private final DfsRefDatabase refdb;
|
||||
|
||||
private final RefDatabase refdb;
|
||||
private final DfsObjDatabase objdb;
|
||||
|
||||
private final List<DfsPackDescription> newPackDesc;
|
||||
|
@ -195,7 +194,7 @@ public boolean pack(ProgressMonitor pm) throws IOException {
|
|||
|
||||
ctx = (DfsReader) objdb.newReader();
|
||||
try {
|
||||
refdb.clearCache();
|
||||
refdb.refresh();
|
||||
objdb.clearCache();
|
||||
|
||||
refsBefore = refdb.getRefs(ALL);
|
||||
|
|
|
@ -261,6 +261,11 @@ public void create() {
|
|||
// Nothing to do.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh() {
|
||||
clearCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
clearCache();
|
||||
|
|
|
@ -79,9 +79,6 @@ protected DfsRepository(DfsRepositoryBuilder builder) {
|
|||
@Override
|
||||
public abstract DfsObjDatabase getObjectDatabase();
|
||||
|
||||
@Override
|
||||
public abstract DfsRefDatabase getRefDatabase();
|
||||
|
||||
/** @return a description of this repository. */
|
||||
public DfsRepositoryDescription getDescription() {
|
||||
return description;
|
||||
|
@ -95,7 +92,10 @@ public DfsRepositoryDescription getDescription() {
|
|||
* the repository cannot be checked.
|
||||
*/
|
||||
public boolean exists() throws IOException {
|
||||
return getRefDatabase().exists();
|
||||
if (getRefDatabase() instanceof DfsRefDatabase) {
|
||||
return ((DfsRefDatabase) getRefDatabase()).exists();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -117,7 +117,7 @@ public StoredConfig getConfig() {
|
|||
|
||||
@Override
|
||||
public void scanForRepoChanges() throws IOException {
|
||||
getRefDatabase().clearCache();
|
||||
getRefDatabase().refresh();
|
||||
getObjectDatabase().clearCache();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue