fs: git: use pygit2 (#5559)

This commit is contained in:
Ruslan Kuprieiev
2021-03-06 02:54:13 +02:00
committed by GitHub
parent 4a75067f4c
commit 47bcb02ef1
3 changed files with 4 additions and 7 deletions
-6
View File
@@ -158,12 +158,6 @@ class GitFileSystem(BaseFileSystem): # pylint:disable=abstract-method
errno.ENOENT, os.strerror(errno.ENOENT), path
)
@property
def hash_jobs(self): # pylint: disable=invalid-overridden-method
# NOTE: gitpython is not threadsafe. See
# https://github.com/iterative/dvc/issues/4079
return 1
def walk_files(self, top): # pylint: disable=arguments-differ
for root, _, files in self.walk(top):
for file in files:
+1 -1
View File
@@ -352,7 +352,7 @@ class Git(Base):
from .objects import GitTrie
resolved = self.resolve_rev(rev)
tree_obj = self._backend_func("get_tree_obj", rev=resolved)
tree_obj = self.pygit2.get_tree_obj(rev=resolved)
trie = GitTrie(tree_obj, resolved)
return GitFileSystem(self.root_dir, trie, **kwargs)
+3
View File
@@ -1,6 +1,7 @@
import locale
import logging
import os
import stat
from io import BytesIO, StringIO
from typing import Callable, Iterable, List, Mapping, Optional, Tuple, Union
@@ -31,6 +32,8 @@ class Pygit2Object(GitObject):
@property
def mode(self):
if not self.obj.filemode and self.obj.type_str == "tree":
return stat.S_IFDIR
return self.obj.filemode
def scandir(self) -> Iterable["Pygit2Object"]: