From 2de519ca0d9c5c44f316780d43be00975f5eaea9 Mon Sep 17 00:00:00 2001 From: Jamie Magee <JamieMagee@users.noreply.github.com> Date: Wed, 4 Nov 2020 14:37:52 +0100 Subject: [PATCH] feat(git-submodules): use checkout instead of submodule update (#7645) --- lib/manager/git-submodules/update.spec.ts | 18 +++++++++++++----- lib/manager/git-submodules/update.ts | 11 ++++------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/manager/git-submodules/update.spec.ts b/lib/manager/git-submodules/update.spec.ts index ad45dab18a..e07bb92f78 100644 --- a/lib/manager/git-submodules/update.spec.ts +++ b/lib/manager/git-submodules/update.spec.ts @@ -1,5 +1,6 @@ import _simpleGit from 'simple-git'; import { dir } from 'tmp-promise'; +import { Upgrade } from '../common'; import updateDependency from './update'; @@ -8,28 +9,35 @@ const simpleGit: any = _simpleGit; describe('manager/git-submodules/update', () => { describe('updateDependency', () => { + let upgrade: Upgrade; + beforeAll(async () => { + const tmpDir = await dir(); + upgrade = { localDir: tmpDir.path, depName: 'renovate' }; + }); it('returns null on error', async () => { simpleGit.mockReturnValue({ - raw() { + submoduleUpdate() { throw new Error(); }, }); const update = await updateDependency({ fileContent: '', - upgrade: {}, + upgrade, }); expect(update).toBeNull(); }); it('returns content on update', async () => { - const tmpDir = await dir(); simpleGit.mockReturnValue({ - raw() { + submoduleUpdate() { + return Promise.resolve(); + }, + checkout() { return Promise.resolve(); }, }); const update = await updateDependency({ fileContent: '', - upgrade: { localDir: tmpDir.path }, + upgrade, }); expect(update).toEqual(''); }); diff --git a/lib/manager/git-submodules/update.ts b/lib/manager/git-submodules/update.ts index 50ba372012..58a4d1209a 100644 --- a/lib/manager/git-submodules/update.ts +++ b/lib/manager/git-submodules/update.ts @@ -1,4 +1,5 @@ import Git from 'simple-git'; +import upath from 'upath'; import { UpdateDependencyConfig } from '../common'; @@ -7,15 +8,11 @@ export default async function updateDependency({ upgrade, }: UpdateDependencyConfig): Promise<string | null> { const git = Git(upgrade.localDir); + const submoduleGit = Git(upath.join(upgrade.localDir, upgrade.depName)); try { - await git.raw([ - 'submodule', - 'update', - '--init', - '--remote', - upgrade.depName, - ]); + await git.submoduleUpdate(['--init', upgrade.depName]); + await submoduleGit.checkout([upgrade.newVersion]); return fileContent; } catch (err) { return null; -- GitLab