GitPython:检查子模块的远程更改

时间:2019-01-31 08:21:47

标签: python git gitpython

我有一个包含两个子模块的仓库。我想检测子模块中的更改。

例如,我有一个名为repo1的仓库,其中有两个子模块,分别为sub_repo1sub_repo2。我想检测这两个子模块中的更改并将其合并到repo1中。我尝试了以下代码

from git import Repo
repo = Repo(repo1_path)
for submodule in repo.submodules():
    <I cannot find more reference>

我找不到有关如何检测子模块更改的参考。

我可以在这些子模块中使用git diff来查找远程更改。

我的问题是:

  1. 我可以检测到submodule中的更改吗?
  2. 我可以使用GitPython(例如称为的类)而不是像git diff这样的字符串来获取列出的结果吗?

非常感谢。

我检查过的参考资料是:

  1. Get changed files using gitpython
  2. GitPython check if git pull changed local files
  3. how to do a git diff of current commit with last commit using gitpython?

1 个答案:

答案 0 :(得分:0)

可以使用以下命令显示git.diff.Diff个对象的列表,这些对象代表路径.git处存储库子模块中的更改。

from git import Repo

repo = Repo(".git")

for s in repo.submodules:
    print(s.module().index.diff(None))

文档here指出module()是子模块引用的存储库。在上例中获得的diff用于索引和工作副本之间的更改。有关获取差异信息的更多详细信息,请参见here