Details
-
Type:
Bug
-
Status: Open (View Workflow)
-
Priority:
Major
-
Resolution: Unresolved
-
Component/s: git-plugin
-
Labels:None
-
Similar Issues:
Description
If you create a project that has a relative submodule path. Say this is hosted in your personal github space:
https://github.com/username/mainproject
https://github.com/username/subproject
The subproject it part of the mainproject with an entry link this in the .gitmodules:
[submodule "subproject"]
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):
https://github.com/organisation/mainproject
https://github.com/organisation/subproject
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.
Attachments
Issue Links
- is related to
-
JENKINS-8503 Git submodules are cloned too early and not removed once the revToBuild has been checked out
-
- Open
-
Code changed in jenkins
User: Mark Waite
Path:
src/test/java/org/jenkinsci/plugins/gitclient/GitAPITestCase.java
http://jenkins-ci.org/commit/git-client-plugin/eec1a16bc7ddff1ffd022f5c9e5f631f1a63f329
Log:
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 RevisionJENKINS-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
Compare: https://github.com/jenkinsci/git-client-plugin/compare/cdcbfd56f49f...eec1a16bc7dd