Commit Diff


commit - e9071c627f6d0a04a388b95402dbddd7ecfc3f52
commit + 0c467db4cf6f6f9f5df31b8d2e03ea4edd13e6cd
blob - 962e327b7f5096c5030bcf11507d4bde11446fb8
blob + 85d073258d11da96c0d7330d6a337793aa42aa77
--- dulwich/config.py
+++ dulwich/config.py
@@ -29,13 +29,12 @@ TODO:
 import os
 import sys
 import warnings
-
 from typing import (
     BinaryIO,
     Iterable,
     Iterator,
-    List,
     KeysView,
+    List,
     MutableMapping,
     Optional,
     Tuple,
@@ -202,7 +201,12 @@ class Config(object):
             return False
         raise ValueError("not a valid boolean string: %r" % value)
 
-    def set(self, section: KeyLike, name: BytesLike, value: ValueLike) -> None:
+    def set(
+        self,
+        section: KeyLike,
+        name: BytesLike,
+        value: Union[ValueLike, bool]
+    ) -> None:
         """Set a configuration value.
 
         Args:
@@ -212,18 +216,6 @@ class Config(object):
           value: value of the setting
         """
         raise NotImplementedError(self.set)
-
-    def set_boolean(self, section: KeyLike, name: BytesLike, value: bool) -> None:
-        """Set a boolean configuration value.
-
-        Args:
-          section: Tuple with section name and optional subsection namee
-          name: Name of the configuration value, including section
-            and optional subsection
-          value: value of the setting
-        """
-        text = b"true" if value else b"false"
-        self.set(section, name, text)
 
     def items(self, section: KeyLike) -> Iterator[Tuple[bytes, Value]]:
         """Iterate over the configuration pairs for a specific section.
@@ -381,11 +373,14 @@ class ConfigDict(Config, MutableMapping[Key, MutableMa
         self,
         section: KeyLike,
         name: BytesLike,
-        value: ValueLike,
+        value: Union[ValueLike, bool],
     ) -> None:
         section, name = self._check_section_and_name(section, name)
 
-        if not isinstance(value, (bytes, bool)):
+        if isinstance(value, bool):
+            value = b"true" if value else b"false"
+
+        if not isinstance(value, bytes):
             value = value.encode(self.encoding)
 
         self._values.setdefault(section)[name] = value
@@ -744,7 +739,12 @@ class StackedConfig(Config):
             except KeyError:
                 pass
 
-    def set(self, section: KeyLike, name: BytesLike, value: ValueLike) -> None:
+    def set(
+        self,
+        section: KeyLike,
+        name: BytesLike,
+        value: Union[ValueLike, bool]
+    ) -> None:
         if self.writable is None:
             raise NotImplementedError(self.set)
         return self.writable.set(section, name, value)
blob - 264ab907e6d89a032af4c3251432c66331a9e14f
blob + 80c2ad575723a1452ebcc6bd4b34a2fe267fc7e1
--- dulwich/repo.py
+++ dulwich/repo.py
@@ -366,12 +366,12 @@ class BaseRepo(object):
         cf = ConfigFile()
         cf.set("core", "repositoryformatversion", "0")
         if self._determine_file_mode():
-            cf.set_boolean("core", "filemode", True)
+            cf.set("core", "filemode", True)
         else:
-            cf.set_boolean("core", "filemode", False)
+            cf.set("core", "filemode", False)
 
-        cf.set_boolean("core", "bare", bare)
-        cf.set_boolean("core", "logallrefupdates", True)
+        cf.set("core", "bare", bare)
+        cf.set("core", "logallrefupdates", True)
         cf.write_to_file(f)
         self._put_named_file("config", f.getvalue())
         self._put_named_file(os.path.join("info", "exclude"), b"")