Closed
Description
Git submodules allow relative URLs which are based on the parent repo URL.
Right now this is not supported, ie. adding a submodule configuration in .gitmodules
with a relative URL will fail when cloning in the add
or update
Submodule
.
A sample stack trace when calling submodule.update(init=True)
:
GitCommandError
Cmd('git') failed due to: exit code(128)
cmdline: git clone -n --separate-git-dir=/opt/parent_project/.git/modules/submodule_project -v ../../my-company/submodule-project.git /opt/parent_project/submodule_project
stderr: 'fatal: repository '../../my-company/submodule-project.git' does not exist
'
git/cmd.py in wait at line 291
git/util.py in finalize_process at line 341
git/repo/base.py in _clone at line 880
git/repo/base.py in clone_from at line 925
git/objects/submodule/base.py in _clone_repo at line 261
git/objects/submodule/base.py in update at line 524
GitPython==2.1.1
Still present in the current revision 8f76463
Activity
PhilLab commentedon Oct 8, 2018
Similar but slightly different message in our system, when calling
We are on a Gitlab instance where relative submodule URLs are a must have:
sfuller commentedon Dec 30, 2018
I was able to workaround this issue by manually resolving the relative path in the .gitmodules file. If you care about the .gitmodules file retaining the relative path url, you could easily just set the original url back to the .gitmodules file after operating on the repo with gitpython.
Bruceforce commentedon Dec 31, 2018
Another workaround I'm currently using is to use git directly as described in https://gitpython.readthedocs.io/en/stable/tutorial.html#using-git-directly
Towards handling of relative submodule paths
Relative URLs for submodules
fix updating submodules with relative urls
fix updating submodules with relative urls
fix updating submodules with relative urls