gitPython获取子模块无需检出即可提交hexsha

时间:2018-09-12 13:15:45

标签: commit git-submodules gitpython

我想使用python来自动生成使用git commit(以及所包含的子句版本)中的版本信息的输出。

要从存储库中读取此信息,我想使用gitpython。 输入是标签。通过此参考,无需检出标记的修订版本,即可轻松获取提交信息,回购网址等。

from git import Repo

repo = Repo(repo_dir)
url = repo.remote().url
commit = release.hexsha

现在涉及修订中包含的子模块。在这里,我想输入名称,提交,路径,URL。经过大量尝试后,我不得不最终签出标签来更新子模块,然后获取此信息。

[...]
# checking out tag revision to get submodule info
repo.git.checkout(tag)

for submodule in repo.submodules:
    submodule.update(init=True)
    module = dict()
    module["name"] = submodule.__str__()
    module["commit"] = submodule.hexsha
    module["path"] = submodule.path
    module["url"] = submodule.url
    module["tag"] = str(next((tag for tag in repo.tags if tag.commit == repo.head.commit), None))

不幸的是,检出和更新花费大量时间,因此我想知道如何在不检出的情况下访问此子模块信息。我认为这应该可行吗? ->但是呢?

有些事情我也很好奇:

  • 如何确保正确检测到更改的子模块url /路径
  • 如何确保正确检测到添加/删除/重命名的子模块

0 个答案:

没有答案