jenkinsci / jenkinsci/git-client-plugin
[JENKINS-75860] Updating submodules not working
- Dominant language
- Java
- Stars
- 152
- Forks
- 402
- Avg merge
- 6h 47m
- Merged PRs (30d)
- 4
Description
When recursively updating git submodules an exception is thrown (see attached log file). The submodule "BuildConfig" exists and is correctly configured in my .gitmodules file.
The command that extracts all submodules works:
> git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10
But the url can not be fetched:
> git config --get submodule.BuildScripts.url # timeout=10
hudson.plugins.git.GitException: Command "git config --get submodule.BuildScripts.url" returned status code 1:
....
Problem is the missing file reference to .gitmodules like it exists in the first command:
-f .gitmodules
Edit: I found that the above behavior comes from the '.git/config' and '.gitmodules' files being inconsistent.
I propose that for consistency reasons either '-f .gitmodules' gets removed from
git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url
or
git config --get submodule.XXX.url
is changed to
git config -f .gitmodules --get submodule.XXX.url
As Git does favor the latter formatting I prefer using '.gitmodules' over '.git/config' for submodules.
---
Originally reported by monthycurious, imported from: Updating submodules not working
Raw content of original issue
When recursively updating git submodules an exception is thrown (see attached log file). The submodule "BuildConfig" exists and is correctly configured in my .gitmodules file.
The command that extracts all submodules works:
> git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10
But the url can not be fetched:
> git config --get submodule.BuildScripts.url # timeout=10
hudson.plugins.git.GitException: Command "git config --get submodule.BuildScripts.url" returned status code 1:
....
Problem is the missing file reference to .gitmodules like it exists in the first command:
-f .gitmodules
Edit: I found that the above behavior comes from the '.git/config' and '.gitmodules' files being inconsistent.
I propose that for consistency reasons either '-f .gitmodules' gets removed fromgit config -f .gitmodules --get-regexp ^submodule\.(.+)\.urlor
git config --get submodule.XXX.urlis changed to
git config -f .gitmodules --get submodule.XXX.url
As Git does favor the latter formatting I prefer using '.gitmodules' over '.git/config' for submodules.
environment
```
Jenkins: 2.504.3 (in Docker version 28.3.0, build 38b7060)
OS: Linux - 6.1.0-37-amd64
Java: 21.0.7 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ant:513.vde9e7b_a_0da_0f
antisamy-markup-formatter:173.v680e3a_b_69ff3
apache-httpcomponents-client-4-api:4.5.14-269.vfa_2321039a_83
apache-httpcomponents-client-5-api:5.5-150.veb_76e719855b_
asm-api:9.8-135.vb_2239d08ee90
authentication-tokens:1.131.v7199556c3004
blueocean:1.27.21
blueocean-bitbucket-pipeline:1.27.21
blueocean-commons:1.27.21
blueocean-config:1.27.21
blueocean-core-js:1.27.21
blueocean-dashboard:1.27.21
blueocean-display-url:2.4.4
blueocean-events:1.27.21
blueocean-git-pipeline:1.27.21
blueocean-github-pipeline:1.27.21
blueocean-i18n:1.27.21
blueocean-jwt:1.27.21
blueocean-personalization:1.27.21
blueocean-pipeline-api-impl:1.27.21
blueocean-pipeline-editor:1.27.21
blueocean-pipeline-scm-api:1.27.21
blueocean-rest:1.27.21
blueocean-rest-impl:1.27.21
blueocean-web:1.27.21
bootstrap5-api:5.3.5-1
bouncycastle-api:2.30.1.80-261.v00c0e2618ec3
branch-api:2.1226.ve1e7e0b_4b_95f
build-timeout:1.38
caffeine-api:3.2.0-166.v72a_6d74b_870f
checks-api:373.vfe7645102093
cloud-stats:377.vd8a_6c953e98e
cloudbees-bitbucket-branch-source:936.4.1
cloudbees-folder:6.1026.ve06dfa_cf31c3
commons-compress-api:1.27.1-3
commons-lang3-api:3.17.0-87.v5cf526e63b_8b_
commons-text-api:1.13.1-176.v74d88f22034b_
config-file-provider:988.v0461fcc2b_9d1
credentials:1415.v831096eb_5534
credentials-binding:687.v619cb_15e923f
dark-theme:524.vd675b_22b_30cb_
display-url-api:2.209.v582ed814ff2f
docker-commons:457.v0f62a_94f11a_3
docker-java-api:3.5.1-116.v2798d5ed4ce7
docker-plugin:1274.vc0203fdf2e74
docker-workflow:621.va_73f881d9232
durable-task:587.v84b_877235b_45
echarts-api:5.6.0-4
eddsa-api:0.3.0.1-19.vc432d923e5ee
email-ext:1911.v19b_8e86f9815
favorite:2.237.v79163ca_8b_892
font-awesome-api:6.7.2-1
git:5.7.0
git-client:6.2.0
github:1.43.0
github-api:1.321-488.v9b_c0da_9533f8
github-branch-source:1824.v046257273408
gradle:2.15
gson-api:2.13.1-139.v4569c2ef303f
handy-uri-templates-2-api:2.1.8-36.v85e4cb_234a_13
htmlpublisher:425
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:88.va_4187cb_eddf1
jackson2-api:2.19.0-404.vb_b_0fd2fea_e10
jakarta-activation-api:2.1.3-2
jakarta-mail-api:2.1.3-2
javadoc:327.vdfe586651ee0
javax-activation-api:1.2.0-8
jaxb:2.3.9-133.vb_ec76a_73f706
jenkins-design-language:1.27.21
jjwt-api:0.11.5-120.v0268cf544b_89
joda-time-api:2.14.0-127.v7d9da_295a_d51
jquery3-api:3.7.1-3
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20250517-153.vc8a_a_d87c0ce3
json-path-api:2.9.0-148.v22a_7ffe323ce
jsoup:1.21.1-52.v96e4041b_60fd
junit:1335.v6b_a_a_e18534e1
ldap:780.vcb_33c9a_e4332
mailer:509.vc54d23fc427e
matrix-auth:3.2.6
matrix-project:849.v0cd64ed7e531
maven-plugin:3.26
metrics:4.2.32-476.v5042e1c1edd7
mina-sshd-api-common:2.15.0-161.vb_200831a_c15b_
mina-sshd-api-core:2.15.0-161.vb_200831a_c15b_
okhttp-api:4.11.0-189.v976fa_d3379d6
oss-symbols-api:356.v2da_d59a_3742b_
pam-auth:1.12
pipeline-build-step:571.v08a_fffd4b_0ce
pipeline-github-lib:65.v203688e7727e
pipeline-graph-analysis:241.vc3d48fb_b_2582
pipeline-graph-view:588.v1efd7e219272
pipeline-groovy-lib:752.vdddedf804e72
pipeline-input-step:527.vd61b_1d3c5078
pipeline-milestone-step:138.v78ca_76831a_43
pipeline-model-api:2.2255.v56a_15e805f12
pipeline-model-definition:2.2255.v56a_15e805f12
pipeline-model-extensions:2.2255.v56a_15e805f12
pipeline-stage-step:322.vecffa_99f371c
pipeline-stage-tags-metadata:2.2255.v56a_15e805f12
plain-credentials:199.v9f8e1f741799
plugin-util-api:6.1.0
pubsub-light:1.19
resource-disposer:0.25
scm-api:704.v3ce5c542825a_
script-security:1373.vb_b_4a_a_c26fa_00
snakeyaml-api:2.3-125.v4d77857a_b_402
sse-gateway:1.28
ssh-credentials:359.v2191c4cf635f
ssh-slaves:3.1031.v72c6b_883b_869
structs:350.v3b_30f09f2363
theme-manager:294.vf2c2fd783821
timestamper:1.29
token-macro:444.v52de7e9c573d
trilead-api:2.209.v0e69b_c43c245
variant:70.va_d9f17f859e0
workflow-aggregator:608.v67378e9d3db_1
workflow-api:1373.v7b_813f10efa_b_
workflow-basic-steps:1079.vce64b_a_929c5a_
workflow-cps:4150.ve20ca_b_a_a_2815
workflow-durable-task-step:1431.v16e66c8a_58b_f
workflow-job:1540.v295eccc9778f
workflow-multibranch:806.vb_b_688f609ee9
workflow-scm-step:437.v05a_f66b_e5ef8
workflow-step-api:700.v6e45cb_a_5a_a_21
workflow-support:968.v8f17397e87b_8
ws-cleanup:0.48
```
3 attachments
- [jenkins-build-job.png](https://issues.jenkins.io/secure/attachment/64639/jenkins-build-job.png)
> 
- [jenkins-build-job.txt](https://issues.jenkins.io/secure/attachment/64638/jenkins-build-job.txt)
- [jenkins-build.log](https://issues.jenkins.io/secure/attachment/64637/jenkins-build.log)
Contributor guide
Assessment
This issue has not been assessed yet.