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 |
Proposed pull request build will generate artifacts that you can use for testing.
Please review the tests and the proposed new pattern.
The problem in my first attempt was the trailing space on the pattern. The pattern is used in two places, one to parse a string, and the other as a regexp argument to git config. When used with git config, it is searching to match a key, and the key will never include a trailing space. As far as I can tell with the new regexp, the trailing space is not required.