Tôi đang sử dụng GitPython với kho lưu trữ trống và tôi đang cố gắng lấy đối tượng git cụ thể bằng sha của nó. Nếu tôi sử dụng git trực tiếp, tôi sẽ chỉ làm điều nàyGitPython lấy đối tượng cây và blob bởi sha
git ls-tree sha_of_tree
git show sha_of_blob
Vì tôi đang sử dụng GitPython và tôi muốn có cây cụ thể, tôi làm như sau.
repo = Repo("path_to_my_repo")
repo.tree("b466a6098a0287ac568ef0ad783ae2c35d86362b")
Và có được điều này lại
<git.Tree "b466a6098a0287ac568ef0ad783ae2c35d86362b">
Bây giờ tôi có một đối tượng cây nhưng tôi không thể truy cập atributes của nó giống như con đường, tên, các đốm màu, vv
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
Nhưng nếu loại như sau nó hoạt động
repo.tree().trees[0].path
Khác một phần của câu hỏi của tôi là làm thế nào để có được đối tượng blob với GitPython. Tôi nhận thấy rằng cây đối tượng duy nhất có các đốm màu thuộc tính để có được blob bởi sha, trước tiên tôi phải biết cây nào thuộc về nó, tìm blob này và sau đó gọi phương thức data_stream. Tôi chỉ có thể làm
repo.git.execute("git show blob_sha")
nhưng tôi muốn biết đầu tiên rằng đây là cách duy nhất để thực hiện việc này.
Vui lòng thêm một số giải thích thêm mã của bạn. Câu trả lời chỉ có mã không phải là rất hữu ích. Cảm ơn. –