Ich benutze GitPython mit einem nackten Repository und ich versuche, bestimmte Git-Objekt durch seine sha erhalten. Wenn ich git direkt verwendet, würde ich ihn nur tunGitPython get Baum und Blob-Objekt von sha
git ls-tree sha_of_tree
git show sha_of_blob
Da ich GitPython bin mit und ich möchte bestimmten Baum bekommen, muss ich folgendes.
repo = Repo("path_to_my_repo")
repo.tree("b466a6098a0287ac568ef0ad783ae2c35d86362b")
Und wieder
<git.Tree "b466a6098a0287ac568ef0ad783ae2c35d86362b">
Jetzt habe ich einen Objektbaum, aber ich kann nicht sein atributes wie Pfad zugreifen, name, Blobs, etc
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
Aber wenn Typ des folgenden es funktioniert
repo.tree().trees[0].path
Das andere Teil meiner Frage ist, wie man ein Blob-Objekt mit GitPython bekommt. Ich habe bemerkt, dass nur der Objektbaum Attribut-Blobs hat, also muss ich zuerst wissen, zu welchem Baum er gehört, diesen Blob finden und dann die Methode data_stream aufrufen. konnte ich nur
repo.git.execute("git show blob_sha")
aber ich möchte zunächst wissen, dass dies der einzige Weg ist, dies zu tun.
Bitte etwas mehr Erklärung des Codes hinzufügen. Code-only-Antworten sind nicht sehr hilfreich. Vielen Dank. –