我已经在这几个小时了,虽然我有一种感觉我很接近,但我似乎无法弄清楚这一点。
我正在尝试制作一个脚本,该脚本采用 git 存储库,将该存储库中的子模块更新为指定版本,并提交该更改。
什么有效:
我可以找到存储库,获取子模块并检查我想要的提交。
什么不起作用:
我似乎无法添加更新的子模块哈希,所以我可以提交它。
我的代码:
repos = Repo('path/to/repos')
submodule = repos.submodule('submodule-name')
submodule.module().git.checkout('wanted commit')
diff = repos.index.diff(None)
此时我可以看到子模块更改。如果我检查 sourcetree,我可以在“未暂存的文件”中看到更改的子模块。问题是,我不知道如何进行更改,以便我可以提交。
我试过的:
- 如果我使用 提交
repos.index.commit('')
,它会创建一个空提交。 - 如果我尝试使用添加子模块的路径,则子模块中
repos.index.add([submodule.path])
的所有文件都将添加到存储库中,这绝对不是我想要的。 - 如果我尝试使用添加子模块本身(根据文档应该可以)
repos.index.add([submodule])
,似乎什么都没有发生。