Bladeren bron

Add Repo.get_shallow.

Jelmer Vernooij 7 jaren geleden
bovenliggende
commit
31e6508e0f
3 gewijzigde bestanden met toevoegingen van 23 en 0 verwijderingen
  1. 2 0
      NEWS
  2. 14 0
      dulwich/repo.py
  3. 7 0
      dulwich/tests/test_repository.py

+ 2 - 0
NEWS

@@ -11,6 +11,8 @@
   * Add `checkout` argument to `Repo.clone`.
     (Jelmer Vernooij, #503)
 
+  * Add `Repo.get_shallow` method. (Jelmer Vernooij)
+
  BUG FIXES
 
   * Fix handling of encoding for tags. (Jelmer Vernooij, #608)

+ 14 - 0
dulwich/repo.py

@@ -453,6 +453,13 @@ class BaseRepo(object):
         backends = [self.get_config()] + StackedConfig.default_backends()
         return StackedConfig(backends, writable=backends[0])
 
+    def get_shallow(self):
+        """Get the set of shallow commits.
+
+        :return: Set of shallow commits.
+        """
+        return set()
+
     def get_peeled(self, ref):
         """Get the peeled value of a ref.
 
@@ -907,6 +914,13 @@ class Repo(BaseRepo):
                 return None
             raise
 
+    def get_shallow(self):
+        f = self.get_named_file('shallow')
+        if f is None:
+            return set()
+        with f:
+            return set(l.strip() for l in f)
+
     def index_path(self):
         """Return path to the index file."""
         return os.path.join(self.controldir(), INDEX_FILENAME)

+ 7 - 0
dulwich/tests/test_repository.py

@@ -662,6 +662,13 @@ class BuildRepoRootTests(TestCase):
         self.assertEqual([], r[commit_sha].parents)
         self._root_commit = commit_sha
 
+    def test_shallow(self):
+        self.assertEqual(set(), self._repo.get_shallow())
+        with open(os.path.join(self._repo.path, '.git', 'shallow'), 'wb') as f:
+            f.write('a90fa2d900a17e99b433217e988c4eb4a2e9a097\n')
+        self.assertEqual({'a90fa2d900a17e99b433217e988c4eb4a2e9a097'},
+                         self._repo.get_shallow())
+
     def test_build_repo(self):
         r = self._repo
         self.assertEqual(b'ref: refs/heads/master', r.refs.read_ref(b'HEAD'))