diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 7661e6cc53c9d4a53a51b711138bbbfef0cada8c..f11c8f540acf70c2845fa7d964df897aa5083553 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -214,6 +214,8 @@ You can also configure this field to `"mirror:x"` where `x` is the name of a pac Doing so means that the `package.json` `version` field will mirror whatever the version is that `x` depended on. Make sure that version is a pinned version of course, as otherwise it won't be valid. +## cloneSubmodules + ## commitBody Configure this if you wish Renovate to add a commit body, otherwise Renovate just uses a regular single-line commit. diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 3d50d2369e01c89df22992844c105f70bb7aa48b..4b76f936e72e923f8f424f783b6eaedf2879a43f 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -1844,6 +1844,13 @@ const options: RenovateOptions[] = [ cli: false, env: false, }, + { + name: 'cloneSubmodules', + description: + 'Set to false to disable initialization of submodules during repository clone', + type: 'boolean', + default: true, + }, ]; export function getOptions(): RenovateOptions[] { diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 6a5311fc7d4c7a4c3c98975485ad8ec279fa5c88..65ff2307fdc53f0430f677cc2819509c4a267349 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -101,6 +101,7 @@ describe('platform/git', () => { await repo.submoduleAdd(base.path, 'submodule'); await repo.commit('Add submodule'); await git.initRepo({ + cloneSubmodules: true, localDir: tmpDir.path, url: base.path, }); @@ -420,6 +421,7 @@ describe('platform/git', () => { ]); await repo.commit('Add submodule'); await git.initRepo({ + cloneSubmodules: true, localDir: tmpDir.path, url: base.path, }); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 925443be3b57ce873d21d9f71140d484d0222959..7a26df73b5822f4bb1c95157388efe81940d9ccf 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -39,6 +39,7 @@ interface StorageConfig { extraCloneOpts?: GitOptions; gitAuthorName?: string; gitAuthorEmail?: string; + cloneSubmodules?: boolean; } interface LocalConfig extends StorageConfig { @@ -263,13 +264,15 @@ export async function syncGit(): Promise<void> { logger.debug({ durationMs }, 'git clone completed'); } config.currentBranchSha = (await git.raw(['rev-parse', 'HEAD'])).trim(); - const submodules = await getSubmodules(); - for (const submodule of submodules) { - try { - logger.debug(`Cloning git submodule at ${submodule}`); - await git.submoduleUpdate(['--init', '--', submodule]); - } catch (err) { - logger.warn(`Unable to initialise git submodule at ${submodule}`); + if (config.cloneSubmodules) { + const submodules = await getSubmodules(); + for (const submodule of submodules) { + try { + logger.debug(`Cloning git submodule at ${submodule}`); + await git.submoduleUpdate(['--init', submodule]); + } catch (err) { + logger.warn(`Unable to initialise git submodule at ${submodule}`); + } } } try {