Browse Source

DfsGarbageCollector: support disabling conversion to reftable

When a repository is initially created using only reftable but doesn't
yet have a GC pack, the garbage collector shouldn't scan the ref
database. Support disabling the reftable conversion path.

Change-Id: Iaaf3a4375cd43760b7181c1bd10244de8b2c5d9e
tags/v4.9.0.201710071750-r
Shawn Pearce 6 years ago
parent
commit
d0d15c3848

+ 15
- 1
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java View File

@@ -107,6 +107,7 @@ public class DfsGarbageCollector {

private PackConfig packConfig;
private ReftableConfig reftableConfig;
private boolean convertToReftable = true;
private long reftableInitialMinUpdateIndex = 1;
private long reftableInitialMaxUpdateIndex = 1;

@@ -171,6 +172,19 @@ public class DfsGarbageCollector {
return this;
}

/**
* @param convert
* if true, {@link #setReftableConfig(ReftableConfig)} has been
* set non-null, and a GC reftable doesn't yet exist, the garbage
* collector will make one by scanning the existing references,
* and writing a new reftable. Default is {@code true}.
* @return {@code this}
*/
public DfsGarbageCollector setConvertToReftable(boolean convert) {
convertToReftable = convert;
return this;
}

/**
* Set minUpdateIndex for the initial reftable created during conversion.
*
@@ -671,7 +685,7 @@ public class DfsGarbageCollector {
}

private void writeReftable(DfsPackDescription pack) throws IOException {
if (!hasGcReftable()) {
if (convertToReftable && !hasGcReftable()) {
writeReftable(pack, refsBefore);
return;
}

Loading…
Cancel
Save