Set config "extensions" option when converting ref storage format
When converting to reftable format the option extensions.refStorage must be set to "reftable" [1]. When converting back to refdir format this config option needs to be removed. Introduce constants for refStorage config options, also for the "reftree" format. [1] https://git.eclipse.org/r/plugins/gitiles/jgit/jgit/+/master/Documentation/technical/reftable.md#Version-1 Change-Id: I190222fa5edc1ad7309daa9be17ca934ff7971e3 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
57f22d6db1
commit
83f90a274c
|
@ -52,6 +52,7 @@
|
|||
import org.eclipse.jgit.internal.storage.reftree.RefTree;
|
||||
import org.eclipse.jgit.internal.storage.reftree.RefTreeDatabase;
|
||||
import org.eclipse.jgit.lib.CommitBuilder;
|
||||
import org.eclipse.jgit.lib.ConfigConstants;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
|
@ -133,8 +134,11 @@ protected void run() throws Exception {
|
|||
|
||||
if (enable && !(db.getRefDatabase() instanceof RefTreeDatabase)) {
|
||||
StoredConfig cfg = db.getConfig();
|
||||
cfg.setInt("core", null, "repositoryformatversion", 1); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
cfg.setString("extensions", null, "refStorage", "reftree"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
cfg.setInt(ConfigConstants.CONFIG_CORE_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_REPO_FORMAT_VERSION, 1);
|
||||
cfg.setString(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_REFSTORAGE,
|
||||
ConfigConstants.CONFIG_REFSTORAGE_REFTREE);
|
||||
cfg.save();
|
||||
errw.println("Enabled reftree."); //$NON-NLS-1$
|
||||
errw.flush();
|
||||
|
|
|
@ -205,12 +205,15 @@ public FileRepository(BaseRepositoryBuilder options) throws IOException {
|
|||
ConfigConstants.CONFIG_KEY_REPO_FORMAT_VERSION, 0);
|
||||
|
||||
String reftype = repoConfig.getString(
|
||||
"extensions", null, "refStorage"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_REFSTORAGE);
|
||||
if (repositoryFormatVersion >= 1 && reftype != null) {
|
||||
if (StringUtils.equalsIgnoreCase(reftype, "reftable")) { //$NON-NLS-1$
|
||||
if (StringUtils.equalsIgnoreCase(reftype,
|
||||
ConfigConstants.CONFIG_REFSTORAGE_REFTABLE)) {
|
||||
refs = new FileReftableDatabase(this,
|
||||
new File(getDirectory(), "refs")); //$NON-NLS-1$
|
||||
} else if (StringUtils.equalsIgnoreCase(reftype, "reftree")) { //$NON-NLS-1$
|
||||
} else if (StringUtils.equalsIgnoreCase(reftype,
|
||||
ConfigConstants.CONFIG_REFSTORAGE_REFTREE)) {
|
||||
refs = new RefTreeDatabase(this, new RefDirectory(this));
|
||||
} else {
|
||||
throw new IOException(JGitText.get().unknownRepositoryFormat);
|
||||
|
@ -721,6 +724,10 @@ void convertToPackedRefs(boolean backup) throws IOException {
|
|||
FileUtils.delete(reftableDir,
|
||||
FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS);
|
||||
}
|
||||
|
||||
repoConfig.unset(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_REFSTORAGE);
|
||||
repoConfig.save();
|
||||
}
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
|
@ -774,6 +781,11 @@ void convertToReftable(boolean writeLogs, boolean backup)
|
|||
|
||||
refs.close();
|
||||
refs = new FileReftableDatabase(this, refsFile);
|
||||
|
||||
repoConfig.setString(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_REFSTORAGE,
|
||||
ConfigConstants.CONFIG_REFSTORAGE_REFTABLE);
|
||||
repoConfig.save();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -503,8 +503,31 @@ public final class ConfigConstants {
|
|||
|
||||
/**
|
||||
* The "minRacyThreshold" key
|
||||
*
|
||||
* @since 5.1.9
|
||||
*/
|
||||
public static final String CONFIG_KEY_MIN_RACY_THRESHOLD = "minRacyThreshold";
|
||||
|
||||
/**
|
||||
* The "extensions" section
|
||||
* @since 5.7
|
||||
*/
|
||||
public static final String CONFIG_EXTENSIONS_SECTION = "extensions";
|
||||
|
||||
/**
|
||||
* The extensions.refStorage key
|
||||
* @since 5.7
|
||||
*/
|
||||
public static final String CONFIG_KEY_REFSTORAGE = "refStorage";
|
||||
|
||||
/**
|
||||
* The "reftable" refStorage format
|
||||
* @since 5.7
|
||||
*/
|
||||
public static final String CONFIG_REFSTORAGE_REFTABLE = "reftable";
|
||||
|
||||
/**
|
||||
* The "reftree" refStorage format
|
||||
* @since 5.7
|
||||
*/
|
||||
public static final String CONFIG_REFSTORAGE_REFTREE = "reftree";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue