Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upsubmodule update doesn't work with relative submodule paths (in GitPython 2.1.14) #944
Comments
Thanks for posting. Which version of GitPython are you using? Even though the submodule implementation may not be up to date with what |
Thanks for the feedback, I am using version |
Thanks for your reply! I am closing this issue as it is already resolved. Interestingly, in the last released version of GitPython with Python 2 compatibility, the submodule improvements should already be present. If you can spot the difference, I would be happy to receive a PR against 2.1.14 that fixes the issue there as well and release 2.1.15. |
Sorry, I made a mistake in my setup while I was testing it with python3 and git python version |
This bug is still present in |
I am afraid there is no priority beyond what people decide to contribute. GitPython is in maintenance mode. |
When looking trough other issues, I think this issue is the same as issue 730. Is there any reason why gitpython doesn't use the "native" |
If memory serves, back in the days I wanted to have 'smart' submodules, that are easier to handle and to update. For that, a lot of additional logic was added to what constitutes a very own implementation, compatible to git-submodules. In retrospect that turned out to be coming with maintenance costs that are now unaffordable. Luckily, users can always workaround themselves by using |
When using the git.objects.submodules.base.Submodule.update method (https://gitpython.readthedocs.io/en/stable/reference.html#git.objects.submodule.base.Submodule.update), the git python module seems to fake a
git submodule
call withgit clone
. It executesgit clone -n --separate-git-dir=<workspace>/.git/modules/<submodule_path> -v <submodule_url> <workspace>/<submodule_path>
. This command doesn't work when a submodule is specified as a relative path in the.gitmodules
path. For example:The
git.objects.submodules.base.Submodule.update
then fails with `repository '../../other_project/some_module.git' does not exist.The regular
git submodule
command is able to resolve the paths.