diff --git a/lib/datasource/crate/index.ts b/lib/datasource/crate/index.ts index 0513b3cdfd2b2496927ac7c564ed4cdc185fc804..39dcaf5b7c8133cb66a73cef95e46efb98661bf3 100644 --- a/lib/datasource/crate/index.ts +++ b/lib/datasource/crate/index.ts @@ -7,6 +7,7 @@ import { ExternalHostError } from '../../types/errors/external-host-error'; import * as memCache from '../../util/cache/memory'; import * as packageCache from '../../util/cache/package'; import { privateCacheDir, readFile } from '../../util/fs'; +import { simpleGitConfig } from '../../util/git/config'; import { Http } from '../../util/http'; import * as cargoVersioning from '../../versioning/cargo'; import type { GetReleasesConfig, Release, ReleaseResult } from '../types'; @@ -159,7 +160,7 @@ async function fetchRegistryInfo( clonePath = join(privateCacheDir(), cacheDirFromUrl(url)); logger.info({ clonePath, registryUrl }, `Cloning private cargo registry`); - const git = Git(); + const git = Git(simpleGitConfig()); const clonePromise = git.clone(registryUrl, clonePath, { '--depth': 1, }); diff --git a/lib/datasource/git-refs/index.ts b/lib/datasource/git-refs/index.ts index 0a5abffa94bf18c3146621bae7316f67c3cb318e..7d12032c88c59d249caef307d96909661a038b40 100644 --- a/lib/datasource/git-refs/index.ts +++ b/lib/datasource/git-refs/index.ts @@ -1,5 +1,6 @@ import simpleGit from 'simple-git'; import * as packageCache from '../../util/cache/package'; +import { simpleGitConfig } from '../../util/git/config'; import { getRemoteUrlWithToken } from '../../util/git/url'; import * as semver from '../../versioning/semver'; import type { DigestConfig, GetReleasesConfig, ReleaseResult } from '../types'; @@ -17,7 +18,7 @@ export async function getRawRefs( { lookupName }: GetReleasesConfig, hostType: string ): Promise<RawRefs[] | null> { - const git = simpleGit(); + const git = simpleGit(simpleGitConfig()); const cacheNamespace = 'git-raw-refs'; const cachedResult = await packageCache.get<RawRefs[]>( diff --git a/lib/manager/git-submodules/extract.ts b/lib/manager/git-submodules/extract.ts index 6c23db7018e3cf9b4a5f8e7950c375b840e24b2e..b5083af836e8e0a8b4ba8b9feb61a7a58e27c167 100644 --- a/lib/manager/git-submodules/extract.ts +++ b/lib/manager/git-submodules/extract.ts @@ -4,6 +4,7 @@ import upath from 'upath'; import { getGlobalConfig } from '../../config/global'; import * as datasourceGitRefs from '../../datasource/git-refs'; import { logger } from '../../logger'; +import { simpleGitConfig } from '../../util/git/config'; import { getHttpUrl, getRemoteUrlWithToken } from '../../util/git/url'; import type { ExtractConfig, PackageFile } from '../types'; import { GitModule } from './types'; @@ -14,7 +15,7 @@ async function getUrl( submoduleName: string ): Promise<string> { const path = ( - await Git().raw([ + await Git(simpleGitConfig()).raw([ 'config', '--file', gitModulesPath, diff --git a/lib/util/git/config.spec.ts b/lib/util/git/config.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..65c03da6c58bae78359ec646ec52806ca8764a5f --- /dev/null +++ b/lib/util/git/config.spec.ts @@ -0,0 +1,9 @@ +import { simpleGitConfig } from './config'; + +describe('util/git/config', () => { + it('uses "close" events, ignores "exit" events from child processes', () => { + expect(simpleGitConfig()).toEqual({ + completion: { onClose: true, onExit: false }, + }); + }); +}); diff --git a/lib/util/git/config.ts b/lib/util/git/config.ts index 957a069f57b90000dd8ca09b05528d14a4e4ddac..7842559b577edb53f81c122b034922654cd5da3e 100644 --- a/lib/util/git/config.ts +++ b/lib/util/git/config.ts @@ -1,4 +1,5 @@ import is from '@sindresorhus/is'; +import { SimpleGitOptions } from 'simple-git'; export const enum GitNoVerifyOption { Commit = 'commit', @@ -21,3 +22,12 @@ export function setNoVerify(value: GitNoVerifyOption[]): void { export function getNoVerify(): GitNoVerifyOption[] { return noVerify; } + +export function simpleGitConfig(): Partial<SimpleGitOptions> { + return { + completion: { + onClose: true, + onExit: false, + }, + }; +} diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 96fa264a5ff041bd87d3beab694c34f3a8b9e185..345fb32af8a49ad5af85af3a2cb8844b7fa624c3 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -25,7 +25,7 @@ import { ExternalHostError } from '../../types/errors/external-host-error'; import { GitOptions, GitProtocol } from '../../types/git'; import { Limit, incLimitedValue } from '../../workers/global/limits'; import { parseGitAuthor } from './author'; -import { GitNoVerifyOption, getNoVerify } from './config'; +import { GitNoVerifyOption, getNoVerify, simpleGitConfig } from './config'; import { configSigningKey, writePrivateKey } from './private-key'; export { GitNoVerifyOption, setNoVerify } from './config'; @@ -186,7 +186,7 @@ export async function initRepo(args: StorageConfig): Promise<void> { config.additionalBranches = []; config.branchIsModified = {}; const { localDir } = getGlobalConfig(); - git = Git(localDir); + git = Git(localDir, simpleGitConfig()); gitInitialized = false; await fetchBranchCommits(); }