Details
-
Type:
Bug
-
Status: Closed (View Workflow)
-
Priority:
Minor
-
Resolution: Fixed
-
Component/s: git-client-plugin
-
Labels:None
-
Similar Issues:
Description
git-client-plugin fetches the list of submodules using:
git config -f .gitmodules --get-regexp "^submodule\\.(.*)\\.url"
Which returns entries in the form:
submodule.<name>.url <value>
It then uses
"Pattern.compile("^submodule\\.(.*)\\.url", Pattern.MULTILINE)"
to extract the module name (CliGitAPIImpl.java#L1062).
I have a thirdparty submodule called "urlesc" that lives in a repo that looks something like:
submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.urlesc.git
If the value contains ".url" the regex will match too much of the line.
It thinks the name is "src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty" and so tries to run:
git config --get "submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.url"
which is incorrect.
The regex should be something like
"^submodule\\.(.*)\\.url "
(note the space after url) or
"^submodule\\.([^ ]*)\\.url"
.
Attachments
Issue Links
- is related to
-
JENKINS-48818 Git plugin no longer updates submodules with spaces in the name
-
- Closed
-
-
JENKINS-48997 The new submodule pattern matching breaks submodules with spaces in name
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Description |
git-client-plugin fetches the list of submodules using: git config -f .gitmodules --get-regexp "^submodule\\.(.*)\\.url" Which returns entries in the form: submodule.<name>.url <value> It then uses "Pattern.compile("^submodule\\.(.*)\\.url", Pattern.MULTILINE)" to extract the module name (CliGitAPIImpl.java#L1062). I have a thirdparty submodule called "urlesc" that lives in a repo that looks something like: submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.urlesc.git If the value contains ".url" the regex will match too much of the line. It thinks the name is "src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty" and so tries to run: git config --get "submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.url" which is incorrect. The regex should be something like "^submodule\\.(.*)\\.url " (note the space after url) or "^submodule\\.([^ ]*)\\.url". |
git-client-plugin fetches the list of submodules using: {noformat} git config -f .gitmodules --get-regexp "^submodule\\.(.*)\\.url" {noformat} Which returns entries in the form: {noformat} submodule.<name>.url <value> {noformat} It then uses {noformat} "Pattern.compile("^submodule\\.(.*)\\.url", Pattern.MULTILINE)" {noformat} to extract the module name (CliGitAPIImpl.java#L1062). I have a thirdparty submodule called "urlesc" that lives in a repo that looks something like: submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.urlesc.git If the value contains ".url" the regex will match too much of the line. It thinks the name is "src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty" and so tries to run: {noformat} git config --get "submodule.src/git.repo.local/urlesc.url git.repo.local:/gitroot/thirdparty.url" {noformat} which is incorrect. The regex should be something like {noformat} "^submodule\\.(.*)\\.url " {noformat} (note the space after url) or {noformat} "^submodule\\.([^ ]*)\\.url" {noformat} . |
Assignee | Mark Waite [ markewaite ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Mark Waite [ markewaite ] |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Resolved [ 5 ] |
Status | Resolved [ 5 ] | Closed [ 6 ] |
Link |
This issue is related to |
Link |
This issue is related to |