Status: Open (View Workflow)
If you create a project that has a relative submodule path. Say this is hosted in your personal github space:
The subproject it part of the mainproject with an entry link this in the .gitmodules:
path = subproject
url = ../subproject.git
Using relative URLs has many benefits, a primary one being the checkout works over any protocol.
If you setup a jenkins job to build mainproject everything works fine, if the project is then move to a different github account (say to your employers organisation):
Changing the URL the jenkins jobs works for pulling in changes from mainproject, but when submodule updates are attempted the old url still gets used. This seems to be because the origin remote in the mainproject repository doesn't get updated with the new URL and so all the relative URLs remain relative to that project.
- is related to
JENKINS-8503 Git submodules are cloned too early and not removed once the revToBuild has been checked out
JENKINS-63049 Git fetch fails if submodule URL changed
Code changed in jenkins
User: Mark Waite
Add two detailed submodule tests
Tests describe the implementation as it currently exists, in hopes
of detecting future regressions with test execution. The tests show
inconsistencies between the CliGitAPIImpl and JGitAPIImpl classes,
and inconsistencies between command line git and JGit behavior.
Command line git clean as implemented in CliGitAPIImpl does not remove
untracked submodules or files contained in untracked submodule dirs.
JGit clean as implemented in JGitAPIImpl removes untracked submodules.
This test captures that surprising difference between the implementations.
CliGitAPIImpl supports renamed submodules. JGitAPIImpl does not support
renamed submodules. One of these tests captures that difference.
See bug reports such as:
JENKINS-22510 - Clean After Checkout Results in Failed to Checkout Revision
JENKINS-8053 - Git submodules are cloned too early and not removed once the revToBuild has been checked out
JENKINS-14083 - Build can't recover from broken submodule path
JENKINS-15399 - Changing remote URL doesn't update submodules
Logging into the build server over ssh and setting the origin remote to the new URL works.
Cleaning out the should work (I didn't want todo this as our checkout is about 600MB of source and takes a while to get again).