我正在使用git repo,它下面有多个子模块。我能够毫无问题地遍历该文件夹中的blob和树,但是当我遇到子模块时,我收到以下错误:AttributeError:如果未初始设置,则无法检索子模块的名称。
我正在使用的代码如下:
from git import Repo
repo = Repo("repo_name")
origin = repo.remotes[0]
ref = origin.refs[0]
tree = ref.commit.tree['devices'] <- devices is a submodule
print tree.name
我不完全理解为什么我无法从子模块访问树。子模块确实存在,并且填充在.git / modules文件夹下,所以它希望找到哪个名称?
编辑:看起来我已经弄明白我做错了什么。 Submodule类型是一个单独的repo,所以我必须这样对待它。在这样做时,我必须使用submodule.module()来获取正确的repo,然后像我使用主repo一样深入到树中。我有点乐观地认为树会将所有这些抽象出来,并像另一棵树一样继续挖掘子模块。它没有这样做。 :)