From 340f136448a10931ebcf1335890b217dd66f4949 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2020 14:52:24 +0200
Subject: [PATCH] build(deps): update dependency simple-git to v2 (#6783)

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/datasource/git-refs/index.spec.ts         |  4 +--
 lib/datasource/git-refs/index.ts              |  2 +-
 lib/datasource/git-submodules/index.spec.ts   |  4 +--
 lib/datasource/git-submodules/index.ts        |  2 +-
 lib/datasource/git-tags/index.spec.ts         |  4 +--
 lib/manager/bundler/artifacts.spec.ts         | 20 +++++++-------
 lib/manager/cocoapods/artifacts.spec.ts       | 12 ++++-----
 lib/manager/git-submodules/extract.spec.ts    |  8 +++---
 lib/manager/git-submodules/extract.ts         |  6 ++---
 lib/manager/git-submodules/update.spec.ts     |  4 +--
 lib/manager/git-submodules/update.ts          |  2 +-
 .../gradle-wrapper/artifacts-real.spec.ts     | 11 ++++----
 lib/manager/gradle-wrapper/artifacts.spec.ts  |  8 +++---
 lib/manager/gradle-wrapper/artifacts.ts       |  5 ++--
 lib/platform/azure/azure-helper.ts            |  2 +-
 lib/util/git/index.spec.ts                    | 12 ++++-----
 lib/util/git/index.ts                         | 26 ++++++++++++-------
 package.json                                  |  2 +-
 yarn.lock                                     | 24 +++++++++++++----
 19 files changed, 89 insertions(+), 69 deletions(-)

diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts
index be43285ccc..07a6070266 100644
--- a/lib/datasource/git-refs/index.spec.ts
+++ b/lib/datasource/git-refs/index.spec.ts
@@ -1,9 +1,9 @@
 import fs from 'fs-extra';
-import _simpleGit from 'simple-git/promise';
+import _simpleGit from 'simple-git';
 import { getPkgReleases } from '..';
 import { id as datasource, getDigest } from '.';
 
-jest.mock('simple-git/promise');
+jest.mock('simple-git');
 const simpleGit: any = _simpleGit;
 
 const depName = 'https://github.com/example/example.git';
diff --git a/lib/datasource/git-refs/index.ts b/lib/datasource/git-refs/index.ts
index c872bc33f2..fcb3deaf5d 100644
--- a/lib/datasource/git-refs/index.ts
+++ b/lib/datasource/git-refs/index.ts
@@ -1,4 +1,4 @@
-import simpleGit from 'simple-git/promise';
+import simpleGit from 'simple-git';
 import * as packageCache from '../../util/cache/package';
 import * as semver from '../../versioning/semver';
 import { DigestConfig, GetReleasesConfig, ReleaseResult } from '../common';
diff --git a/lib/datasource/git-submodules/index.spec.ts b/lib/datasource/git-submodules/index.spec.ts
index 5d59836228..da5b3b2c4d 100644
--- a/lib/datasource/git-submodules/index.spec.ts
+++ b/lib/datasource/git-submodules/index.spec.ts
@@ -1,9 +1,9 @@
-import _simpleGit from 'simple-git/promise';
+import _simpleGit from 'simple-git';
 import { getPkgReleases } from '..';
 import { id as versioning } from '../../versioning/git';
 import { id as datasource, getDigest } from '.';
 
-jest.mock('simple-git/promise');
+jest.mock('simple-git');
 const simpleGit: any = _simpleGit;
 
 const depName = 'https://github.com/example/example.git';
diff --git a/lib/datasource/git-submodules/index.ts b/lib/datasource/git-submodules/index.ts
index c085aa3dba..530796a489 100644
--- a/lib/datasource/git-submodules/index.ts
+++ b/lib/datasource/git-submodules/index.ts
@@ -1,5 +1,5 @@
 import { URL } from 'url';
-import Git from 'simple-git/promise';
+import Git from 'simple-git';
 
 import * as packageCache from '../../util/cache/package';
 import { DigestConfig, GetReleasesConfig, ReleaseResult } from '../common';
diff --git a/lib/datasource/git-tags/index.spec.ts b/lib/datasource/git-tags/index.spec.ts
index 7cb76782b6..183371c737 100644
--- a/lib/datasource/git-tags/index.spec.ts
+++ b/lib/datasource/git-tags/index.spec.ts
@@ -1,9 +1,9 @@
 import fs from 'fs-extra';
-import _simpleGit from 'simple-git/promise';
+import _simpleGit from 'simple-git';
 import { getPkgReleases } from '..';
 import { id as datasource, getDigest } from '.';
 
-jest.mock('simple-git/promise');
+jest.mock('simple-git');
 const simpleGit: any = _simpleGit;
 
 const depName = 'https://github.com/example/example.git';
diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts
index e0cb5a3f1f..6e6d9f3d8a 100644
--- a/lib/manager/bundler/artifacts.spec.ts
+++ b/lib/manager/bundler/artifacts.spec.ts
@@ -1,5 +1,4 @@
 import { exec as _exec } from 'child_process';
-import Git from 'simple-git/promise';
 import { join } from 'upath';
 import { envMock, mockExecAll } from '../../../test/execUtil';
 import { fs, git, mocked } from '../../../test/util';
@@ -8,6 +7,7 @@ import { setUtilConfig } from '../../util';
 import { BinarySource } from '../../util/exec/common';
 import * as docker from '../../util/exec/docker';
 import * as _env from '../../util/exec/env';
+import { StatusResult } from '../../util/git';
 import * as _bundlerHostRules from './host-rules';
 import { updateArtifacts } from '.';
 
@@ -63,7 +63,7 @@ describe('bundler.updateArtifacts()', () => {
     const execSnapshots = mockExecAll(exec);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: [],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
     expect(
       await updateArtifacts({
@@ -82,7 +82,7 @@ describe('bundler.updateArtifacts()', () => {
     const execSnapshots = mockExecAll(exec);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Gemfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
     expect(
       await updateArtifacts({
@@ -101,7 +101,7 @@ describe('bundler.updateArtifacts()', () => {
     const execSnapshots = mockExecAll(exec);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Gemfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
     expect(
       await updateArtifacts({
@@ -135,7 +135,7 @@ describe('bundler.updateArtifacts()', () => {
       const execSnapshots = mockExecAll(exec);
       git.getRepoStatus.mockResolvedValueOnce({
         modified: ['Gemfile.lock'],
-      } as Git.StatusResult);
+      } as StatusResult);
       fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
       expect(
         await updateArtifacts({
@@ -163,7 +163,7 @@ describe('bundler.updateArtifacts()', () => {
       const execSnapshots = mockExecAll(exec);
       git.getRepoStatus.mockResolvedValueOnce({
         modified: ['Gemfile.lock'],
-      } as Git.StatusResult);
+      } as StatusResult);
       fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
       expect(
         await updateArtifacts({
@@ -196,7 +196,7 @@ describe('bundler.updateArtifacts()', () => {
       const execSnapshots = mockExecAll(exec);
       git.getRepoStatus.mockResolvedValueOnce({
         modified: ['Gemfile.lock'],
-      } as Git.StatusResult);
+      } as StatusResult);
       fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
       expect(
         await updateArtifacts({
@@ -243,7 +243,7 @@ describe('bundler.updateArtifacts()', () => {
       const execSnapshots = mockExecAll(exec);
       git.getRepoStatus.mockResolvedValueOnce({
         modified: ['Gemfile.lock'],
-      } as Git.StatusResult);
+      } as StatusResult);
       fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
       expect(
         await updateArtifacts({
@@ -268,7 +268,7 @@ describe('bundler.updateArtifacts()', () => {
     const execSnapshots = mockExecAll(exec, execError);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Gemfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
     expect(
       await updateArtifacts({
         packageFileName: 'Gemfile',
@@ -288,7 +288,7 @@ describe('bundler.updateArtifacts()', () => {
     const execSnapshots = mockExecAll(exec);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Gemfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readLocalFile.mockResolvedValueOnce('Updated Gemfile.lock' as any);
     expect(
       await updateArtifacts({
diff --git a/lib/manager/cocoapods/artifacts.spec.ts b/lib/manager/cocoapods/artifacts.spec.ts
index d6284b75ed..910508824d 100644
--- a/lib/manager/cocoapods/artifacts.spec.ts
+++ b/lib/manager/cocoapods/artifacts.spec.ts
@@ -1,6 +1,5 @@
 import { exec as _exec } from 'child_process';
 import _fs from 'fs-extra';
-import Git from 'simple-git/promise';
 import { join } from 'upath';
 import { envMock, mockExecAll } from '../../../test/execUtil';
 import { git, mocked } from '../../../test/util';
@@ -8,6 +7,7 @@ import * as _datasource from '../../datasource';
 import { setExecConfig } from '../../util/exec';
 import { BinarySource } from '../../util/exec/common';
 import * as _env from '../../util/exec/env';
+import { StatusResult } from '../../util/git';
 import { updateArtifacts } from '.';
 
 jest.mock('fs-extra');
@@ -102,7 +102,7 @@ describe('.updateArtifacts()', () => {
     fs.readFile.mockResolvedValueOnce('Current Podfile' as any);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: [],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readFile.mockResolvedValueOnce('Current Podfile' as any);
     expect(
       await updateArtifacts({
@@ -120,7 +120,7 @@ describe('.updateArtifacts()', () => {
     fs.readFile.mockResolvedValueOnce('Old Podfile' as any);
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Podfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
     fs.readFile.mockResolvedValueOnce('New Podfile' as any);
     expect(
       await updateArtifacts({
@@ -142,7 +142,7 @@ describe('.updateArtifacts()', () => {
       not_added: ['Pods/New'],
       modified: ['Podfile.lock', 'Pods/Manifest.lock'],
       deleted: ['Pods/Deleted'],
-    } as Git.StatusResult);
+    } as StatusResult);
     expect(
       await updateArtifacts({
         packageFileName: 'Podfile',
@@ -199,7 +199,7 @@ describe('.updateArtifacts()', () => {
 
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Podfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
 
     await updateArtifacts({
       packageFileName: 'Podfile',
@@ -227,7 +227,7 @@ describe('.updateArtifacts()', () => {
 
     git.getRepoStatus.mockResolvedValueOnce({
       modified: ['Podfile.lock'],
-    } as Git.StatusResult);
+    } as StatusResult);
 
     await updateArtifacts({
       packageFileName: 'Podfile',
diff --git a/lib/manager/git-submodules/extract.spec.ts b/lib/manager/git-submodules/extract.spec.ts
index 0463b71e52..ce618103e3 100644
--- a/lib/manager/git-submodules/extract.spec.ts
+++ b/lib/manager/git-submodules/extract.spec.ts
@@ -1,10 +1,10 @@
-import _simpleGit from 'simple-git/promise';
+import _simpleGit, { SimpleGit } from 'simple-git';
 import { PackageFile } from '../common';
 import extractPackageFile from './extract';
 
-jest.mock('simple-git/promise');
-const simpleGit: jest.Mock<Partial<_simpleGit.SimpleGit>> = _simpleGit as never;
-const Git: typeof _simpleGit = jest.requireActual('simple-git/promise');
+jest.mock('simple-git');
+const simpleGit: jest.Mock<Partial<SimpleGit>> = _simpleGit as never;
+const Git: typeof _simpleGit = jest.requireActual('simple-git');
 
 const localDir = `${__dirname}/__fixtures__`;
 
diff --git a/lib/manager/git-submodules/extract.ts b/lib/manager/git-submodules/extract.ts
index dabe8a8926..1bf4b93495 100644
--- a/lib/manager/git-submodules/extract.ts
+++ b/lib/manager/git-submodules/extract.ts
@@ -1,5 +1,5 @@
 import URL from 'url';
-import Git from 'simple-git/promise';
+import Git, { SimpleGit } from 'simple-git';
 import upath from 'upath';
 
 import * as datasourceGitSubmodules from '../../datasource/git-submodules';
@@ -12,7 +12,7 @@ type GitModule = {
 };
 
 async function getUrl(
-  git: Git.SimpleGit,
+  git: SimpleGit,
   gitModulesPath: string,
   submoduleName: string
 ): Promise<string> {
@@ -50,7 +50,7 @@ async function getBranch(
 }
 
 async function getModules(
-  git: Git.SimpleGit,
+  git: SimpleGit,
   gitModulesPath: string
 ): Promise<GitModule[]> {
   const res: GitModule[] = [];
diff --git a/lib/manager/git-submodules/update.spec.ts b/lib/manager/git-submodules/update.spec.ts
index a6e69a4315..ad45dab18a 100644
--- a/lib/manager/git-submodules/update.spec.ts
+++ b/lib/manager/git-submodules/update.spec.ts
@@ -1,9 +1,9 @@
-import _simpleGit from 'simple-git/promise';
+import _simpleGit from 'simple-git';
 import { dir } from 'tmp-promise';
 
 import updateDependency from './update';
 
-jest.mock('simple-git/promise');
+jest.mock('simple-git');
 const simpleGit: any = _simpleGit;
 
 describe('manager/git-submodules/update', () => {
diff --git a/lib/manager/git-submodules/update.ts b/lib/manager/git-submodules/update.ts
index 6057c79826..50ba372012 100644
--- a/lib/manager/git-submodules/update.ts
+++ b/lib/manager/git-submodules/update.ts
@@ -1,4 +1,4 @@
-import Git from 'simple-git/promise';
+import Git from 'simple-git';
 
 import { UpdateDependencyConfig } from '../common';
 
diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
index 43924275d5..8ebb445510 100644
--- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
@@ -1,9 +1,10 @@
 import { resolve } from 'path';
 import { readFile, readFileSync } from 'fs-extra';
-import Git from 'simple-git/promise';
+import Git from 'simple-git';
 import * as httpMock from '../../../test/httpMock';
 import { getName, git, partial } from '../../../test/util';
 import { setUtilConfig } from '../../util';
+import { StatusResult } from '../../util/git';
 import { ifSystemSupportsGradle } from '../gradle/__testutil__/gradle';
 import * as dcUpdate from '.';
 
@@ -52,7 +53,7 @@ describe(getName(__filename), () => {
           'gradlew',
           'gradlew.bat',
         ],
-      } as Git.StatusResult);
+      } as StatusResult);
 
       const res = await dcUpdate.updateArtifacts({
         packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
@@ -91,7 +92,7 @@ describe(getName(__filename), () => {
 
     it('updates from version', async () => {
       git.getRepoStatus.mockResolvedValueOnce(
-        partial<Git.StatusResult>({
+        partial<StatusResult>({
           modified: ['gradle/wrapper/gradle-wrapper.properties'],
         })
       );
@@ -112,7 +113,7 @@ describe(getName(__filename), () => {
     it('up to date', async () => {
       git.getRepoStatus.mockResolvedValue({
         modified: [],
-      } as Git.StatusResult);
+      } as StatusResult);
 
       const res = await dcUpdate.updateArtifacts({
         packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
@@ -206,7 +207,7 @@ describe(getName(__filename), () => {
         );
 
       git.getRepoStatus.mockResolvedValueOnce(
-        partial<Git.StatusResult>({
+        partial<StatusResult>({
           modified: ['gradle/wrapper/gradle-wrapper.properties'],
         })
       );
diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts
index ef72548d96..2399f6e578 100644
--- a/lib/manager/gradle-wrapper/artifacts.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts.spec.ts
@@ -2,7 +2,6 @@
 import { exec as _exec } from 'child_process';
 import { resolve } from 'path';
 import { readFile } from 'fs-extra';
-import Git from 'simple-git/promise';
 import { envMock, mockExecAll } from '../../../test/execUtil';
 import * as httpMock from '../../../test/httpMock';
 import {
@@ -16,6 +15,7 @@ import {
 import { setUtilConfig } from '../../util';
 import { BinarySource } from '../../util/exec/common';
 import { resetPrefetchedImages } from '../../util/exec/docker';
+import { StatusResult } from '../../util/git';
 import * as dcUpdate from '.';
 
 jest.mock('child_process');
@@ -66,7 +66,7 @@ describe(getName(__filename), () => {
         'gradlew',
         'gradlew.bat',
       ],
-    } as Git.StatusResult);
+    } as StatusResult);
 
     const execSnapshots = mockExecAll(exec);
 
@@ -112,7 +112,7 @@ describe(getName(__filename), () => {
   it('gradlew failed', async () => {
     const execSnapshots = mockExecAll(exec, new Error('failed'));
     git.getRepoStatus.mockResolvedValueOnce(
-      partial<Git.StatusResult>({
+      partial<StatusResult>({
         modified: [],
       })
     );
@@ -137,7 +137,7 @@ describe(getName(__filename), () => {
       );
 
     git.getRepoStatus.mockResolvedValueOnce(
-      partial<Git.StatusResult>({
+      partial<StatusResult>({
         modified: ['gradle/wrapper/gradle-wrapper.properties'],
       })
     );
diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts
index 5cc34b0ee6..389fa9a0bc 100644
--- a/lib/manager/gradle-wrapper/artifacts.ts
+++ b/lib/manager/gradle-wrapper/artifacts.ts
@@ -1,10 +1,9 @@
 import { resolve } from 'path';
 import { stat } from 'fs-extra';
-import Git from 'simple-git/promise';
 import { logger } from '../../logger';
 import { ExecOptions, exec } from '../../util/exec';
 import { readLocalFile, writeLocalFile } from '../../util/fs';
-import { getRepoStatus } from '../../util/git';
+import { StatusResult, getRepoStatus } from '../../util/git';
 import { Http } from '../../util/http';
 import { UpdateArtifact, UpdateArtifactsResult } from '../common';
 import {
@@ -16,7 +15,7 @@ import {
 const http = new Http('gradle-wrapper');
 
 async function addIfUpdated(
-  status: Git.StatusResult,
+  status: StatusResult,
   fileProjectPath: string
 ): Promise<UpdateArtifactsResult | null> {
   if (status.modified.includes(fileProjectPath)) {
diff --git a/lib/platform/azure/azure-helper.ts b/lib/platform/azure/azure-helper.ts
index 6289887586..c10a7983c4 100644
--- a/lib/platform/azure/azure-helper.ts
+++ b/lib/platform/azure/azure-helper.ts
@@ -4,7 +4,7 @@ import {
   GitPullRequestMergeStrategy,
   GitRef,
 } from 'azure-devops-node-api/interfaces/GitInterfaces';
-import { Options } from 'simple-git/promise';
+import { Options } from 'simple-git';
 import {
   PR_STATE_CLOSED,
   PR_STATE_MERGED,
diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts
index f7c4e17687..d23dd7fd61 100644
--- a/lib/util/git/index.spec.ts
+++ b/lib/util/git/index.spec.ts
@@ -1,5 +1,5 @@
 import fs from 'fs-extra';
-import Git from 'simple-git/promise';
+import Git from 'simple-git';
 import tmp from 'tmp-promise';
 import * as git from '.';
 
@@ -20,8 +20,8 @@ describe('platform/git', () => {
     await repo.add(['past_file']);
     await repo.commit('past message');
 
-    await repo.checkoutBranch('renovate/past_branch', 'master');
-    await repo.checkoutBranch('develop', 'master');
+    await repo.checkout(['-b', 'renovate/past_branch', 'master']);
+    await repo.checkout(['-b', 'develop', 'master']);
 
     await repo.checkout('master');
     await fs.writeFile(base.path + '/master_file', 'master');
@@ -31,7 +31,7 @@ describe('platform/git', () => {
       '--date=' + masterCommitDate.toISOString(),
     ]);
 
-    await repo.checkoutBranch('renovate/future_branch', 'master');
+    await repo.checkout(['-b', 'renovate/future_branch', 'master']);
     await fs.writeFile(base.path + '/future_file', 'future');
     await repo.add(['future_file']);
     await repo.commit('future message');
@@ -328,7 +328,7 @@ describe('platform/git', () => {
   describe('initRepo())', () => {
     it('should fetch latest', async () => {
       const repo = Git(base.path).silent(true);
-      await repo.checkoutBranch('test', 'master');
+      await repo.checkout(['-b', 'test', 'master']);
       await fs.writeFile(base.path + '/test', 'lorem ipsum');
       await repo.add(['test']);
       await repo.commit('past message2');
@@ -356,7 +356,7 @@ describe('platform/git', () => {
 
     it('should set branch prefix', async () => {
       const repo = Git(base.path).silent(true);
-      await repo.checkoutBranch('renovate/test', 'master');
+      await repo.checkout(['-b', 'renovate/test', 'master']);
       await fs.writeFile(base.path + '/test', 'lorem ipsum');
       await repo.add(['test']);
       await repo.commit('past message2');
diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts
index d80a0b5e4a..2bb3d71db1 100644
--- a/lib/util/git/index.ts
+++ b/lib/util/git/index.ts
@@ -1,7 +1,13 @@
 import { join } from 'path';
 import URL from 'url';
 import fs from 'fs-extra';
-import Git from 'simple-git/promise';
+import Git, {
+  DiffResult as DiffResult_,
+  Options,
+  ResetMode,
+  SimpleGit,
+  StatusResult as StatusResult_,
+} from 'simple-git';
 import {
   CONFIG_VALIDATION,
   REPOSITORY_CHANGED,
@@ -20,15 +26,15 @@ declare module 'fs-extra' {
   export function exists(pathLike: string): Promise<boolean>;
 }
 
-export type StatusResult = Git.StatusResult;
+export type StatusResult = StatusResult_;
 
-export type DiffResult = Git.DiffResult;
+export type DiffResult = DiffResult_;
 
 interface StorageConfig {
   localDir: string;
   currentBranch?: string;
   url: string;
-  extraCloneOpts?: Git.Options;
+  extraCloneOpts?: Options;
   gitAuthorName?: string;
   gitAuthorEmail?: string;
 }
@@ -82,7 +88,7 @@ async function isDirectory(dir: string): Promise<boolean> {
   }
 }
 
-async function getDefaultBranch(git: Git.SimpleGit): Promise<string> {
+async function getDefaultBranch(git: SimpleGit): Promise<string> {
   // see https://stackoverflow.com/a/44750379/1438522
   try {
     const res = await git.raw(['symbolic-ref', 'refs/remotes/origin/HEAD']);
@@ -102,7 +108,7 @@ async function getDefaultBranch(git: Git.SimpleGit): Promise<string> {
 
 let config: LocalConfig = {} as any;
 
-let git: Git.SimpleGit | undefined;
+let git: SimpleGit | undefined;
 
 let privateKeySet = false;
 
@@ -249,7 +255,7 @@ export async function createBranch(
   sha: string
 ): Promise<void> {
   logger.debug(`createBranch(${branchName})`);
-  await git.reset('hard');
+  await git.reset(ResetMode.HARD);
   await git.raw(['clean', '-fd']);
   await git.checkout(['-B', branchName, sha]);
   await git.push('origin', branchName, { '--force': true });
@@ -315,7 +321,7 @@ export async function setBranch(branchName: string): Promise<string> {
         ).trim();
       }
       await git.checkout([branchName, '-f']);
-      await git.reset('hard');
+      await git.reset(ResetMode.HARD);
       const latestCommitDate = (await git.log({ n: 1 })).latest.date;
       logger.debug({ branchName, latestCommitDate }, 'latest commit');
     } catch (err) /* istanbul ignore next */ {
@@ -415,7 +421,7 @@ export async function deleteBranch(branchName: string): Promise<void> {
 }
 
 export async function mergeBranch(branchName: string): Promise<void> {
-  await git.reset('hard');
+  await git.reset(ResetMode.HARD);
   await git.checkout(['-B', branchName, 'origin/' + branchName]);
   await git.checkout(config.currentBranch);
   await git.merge(['--ff-only', branchName]);
@@ -509,7 +515,7 @@ export async function commitFiles({
     privateKeySet = true;
   }
   try {
-    await git.reset('hard');
+    await git.reset(ResetMode.HARD);
     await git.raw(['clean', '-fd']);
     await git.checkout(['-B', branchName, 'origin/' + config.currentBranch]);
     const fileNames = [];
diff --git a/package.json b/package.json
index 6caa004871..7de1917e9b 100644
--- a/package.json
+++ b/package.json
@@ -162,7 +162,7 @@
     "semver-utils": "1.1.4",
     "shlex": "2.0.2",
     "shortid": "2.2.15",
-    "simple-git": "1.132.0",
+    "simple-git": "2.13.2",
     "slugify": "1.4.4",
     "toml": "3.0.0",
     "traverse": "0.6.6",
diff --git a/yarn.lock b/yarn.lock
index 844f5b8de4..eda1c823d9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1137,6 +1137,18 @@
     "@types/yargs" "^15.0.0"
     chalk "^4.0.0"
 
+"@kwsites/file-exists@^1.1.1":
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
+  integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==
+  dependencies:
+    debug "^4.1.1"
+
+"@kwsites/promise-deferred@^1.1.1":
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
+  integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
+
 "@nodelib/fs.scandir@2.1.3":
   version "2.1.3"
   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
@@ -9063,12 +9075,14 @@ signale@^1.2.1:
     figures "^2.0.0"
     pkg-conf "^2.1.0"
 
-simple-git@1.132.0:
-  version "1.132.0"
-  resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.132.0.tgz#53ac4c5ec9e74e37c2fd461e23309f22fcdf09b1"
-  integrity sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==
+simple-git@2.13.2:
+  version "2.13.2"
+  resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.13.2.tgz#9cbd66fa7db943b0c863009e5086fc022f6c0bca"
+  integrity sha512-GXBwoTtgwrNWFqs/wo48UaWC18ckEK8HcwTM3znfUTz02J29kSsQXdulthciSE6hdfccT29PNPScfMTjE41ahg==
   dependencies:
-    debug "^4.0.1"
+    "@kwsites/file-exists" "^1.1.1"
+    "@kwsites/promise-deferred" "^1.1.1"
+    debug "^4.1.1"
 
 sinon@^9.0.1:
   version "9.0.2"
-- 
GitLab