]> source.dussan.org Git - jgit.git/commitdiff
CommitGraph: add core.commitGraph config 28/197628/5
authorkylezhao <kylezhao@tencent.com>
Mon, 12 Dec 2022 02:22:04 +0000 (10:22 +0800)
committerIvan Frade <ifrade@google.com>
Fri, 16 Dec 2022 15:21:09 +0000 (10:21 -0500)
Change-Id: I3b5e735ebafba09ca18fd83da479c7950fa3ea8d
Signed-off-by: kylezhao <kylezhao@tencent.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java

index a85a4f49b6e7d73c11097a08aa4df801aac13634..8f9d105319522c93cebc10a8d84619838cfbb575 100644 (file)
@@ -1581,6 +1581,20 @@ public class ConfigTest {
                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);
index 203533d3a81c003771485253e57d5ad04c30ec2a..d0ec479149921ab38d8d7271f6ab6564877e12b5 100644 (file)
@@ -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";
 }
index f23c6e08d1cfb38e8f77df8294fb88307e028945..b1ace6e8681438e6dfd9a6beeaf24318ad59afcf 100644 (file)
@@ -116,6 +116,13 @@ public class CoreConfig {
                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 class CoreConfig {
 
        private final String attributesfile;
 
+       private final boolean commitGraph;
+
        /**
         * Options for symlink handling
         *
@@ -167,6 +176,9 @@ public class CoreConfig {
                                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 class CoreConfig {
        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;
+       }
 }