Używam GitPython z gołym repozytorium i próbuję uzyskać określony obiekt git przez jego sha. Jeżeli użyłem git bezpośrednio, ja po prostu to zrobićGitPython uzyskać obiekt drzewa i blob przez sha
git ls-tree sha_of_tree
git show sha_of_blob
Ponieważ używam GitPython i chcę, aby uzyskać konkretne drzewo, I wykonaj następujące czynności.
repo = Repo("path_to_my_repo")
repo.tree("b466a6098a0287ac568ef0ad783ae2c35d86362b")
i otrzymaj powrotem
<git.Tree "b466a6098a0287ac568ef0ad783ae2c35d86362b">
Teraz mam obiekt drzewa, ale nie może uzyskać dostępu do jego ATUTY jak ścieżki, nazwy, bąble, itd
repo.tree("b466a6098a0287ac568ef0ad783ae2c35d86362b").path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Python27\lib\site-packages\gitdb\util.py", line 238, in __getattr__
self._set_cache_(attr)
File "c:\Python27\lib\site-packages\git\objects\tree.py", line 147, in _set_cache_
super(Tree, self)._set_cache_(attr)
File "c:\Python27\lib\site-packages\git\objects\base.py", line 157, in _set_cache_
raise AttributeError("path and mode attributes must have been set during %s object creation" % type(self).__name__)
AttributeError: path and mode attributes must have been set during Tree object creation
ale jeśli typ następujących działa
repo.tree().trees[0].path
Pozostałe częścią mojego pytania jest jak uzyskać obiekt blob z GitPython. Zauważyłem, że tylko drzewo obiektów ma bloby atrybutów, więc aby uzyskać blob po sha, muszę najpierw wiedzieć, do którego drzewa należy, znaleźć ten obiekt typu blob, a następnie wywołać metodę strumienia danych. mogę tylko zrobić
repo.git.execute("git show blob_sha")
ale chciałbym najpierw wiedzieć, że jest to jedyny sposób, aby to zrobić.
proszę dodać trochę więcej wyjaśnień swojego kodu. Odpowiedzi tylko na kod nie są zbyt pomocne. Dzięki. –