Я был здесь уже несколько часов, и хотя у меня такое чувство, что я близко, я не могу понять этого.
Я пытаюсь создать script, который принимает репозиторий 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])
, ничего не происходит.