diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java index a85a4f49b..8f9d10531 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java @@ -1581,6 +1581,20 @@ public void testCommitTemplateWithInvalidPath() config.get(CommitConfig.KEY).getCommitTemplateContent(repo); } + @Test + public void testCoreCommitGraphConfig() { + Config config = new Config(); + assertFalse(config.get(CoreConfig.KEY).enableCommitGraph()); + + config.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null, + ConfigConstants.CONFIG_COMMIT_GRAPH, true); + assertTrue(config.get(CoreConfig.KEY).enableCommitGraph()); + + config.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null, + ConfigConstants.CONFIG_COMMIT_GRAPH, false); + assertFalse(config.get(CoreConfig.KEY).enableCommitGraph()); + } + private static void assertValueRoundTrip(String value) throws ConfigInvalidException { assertValueRoundTrip(value, value); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java index 203533d3a..d0ec47914 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java @@ -892,4 +892,11 @@ public final class ConfigConstants { * @since 6.5 */ public static final String CONFIG_KEY_WRITE_COMMIT_GRAPH = "writeCommitGraph"; + + /** + * The "commitGraph" used by commit-graph feature + * + * @since 6.5 + */ + public static final String CONFIG_COMMIT_GRAPH = "commitGraph"; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java index f23c6e08d..b1ace6e86 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java @@ -116,6 +116,13 @@ public enum LogRefUpdates { ALWAYS } + /** + * Default value of commit graph enable option: {@value} + * + * @since 6.5 + */ + public static final boolean DEFAULT_COMMIT_GRAPH_ENABLE = false; + private final int compression; private final int packIndexVersion; @@ -126,6 +133,8 @@ public enum LogRefUpdates { private final String attributesfile; + private final boolean commitGraph; + /** * Options for symlink handling * @@ -167,6 +176,9 @@ private CoreConfig(Config rc) { ConfigConstants.CONFIG_KEY_EXCLUDESFILE); attributesfile = rc.getString(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_ATTRIBUTESFILE); + commitGraph = rc.getBoolean(ConfigConstants.CONFIG_CORE_SECTION, + ConfigConstants.CONFIG_COMMIT_GRAPH, + DEFAULT_COMMIT_GRAPH_ENABLE); } /** @@ -219,4 +231,16 @@ public String getExcludesFile() { public String getAttributesFile() { return attributesfile; } + + /** + * Whether to read the commit-graph file (if it exists) to parse the graph + * structure of commits. Default to + * {@value org.eclipse.jgit.lib.CoreConfig#DEFAULT_COMMIT_GRAPH_ENABLE}. + * + * @return whether to read the commit-graph file + * @since 6.5 + */ + public boolean enableCommitGraph() { + return commitGraph; + } }