Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/src/git-command-manager.ts
diff options
context:
space:
mode:
authoreric sciple <ericsciple@users.noreply.github.com>2019-12-10 01:32:25 -0500
committereric sciple <ericsciple@users.noreply.github.com>2019-12-10 01:32:25 -0500
commit4a105ae54b2da526261984b63cdf1e8201c23c26 (patch)
treebfba89169b49443907e27bf60ea1fe0dd15cd9e2 /src/git-command-manager.ts
parent25200ab0645b98efa3c63720f8acac662337877c (diff)
.
Diffstat (limited to 'src/git-command-manager.ts')
-rw-r--r--src/git-command-manager.ts51
1 files changed, 9 insertions, 42 deletions
diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts
index 70dce8f..ddd5ec6 100644
--- a/src/git-command-manager.ts
+++ b/src/git-command-manager.ts
@@ -3,6 +3,7 @@ import * as exec from '@actions/exec'
import * as fshelper from './fs-helper'
import * as io from '@actions/io'
import * as path from 'path'
+import * as retryHelper from './retry-helper'
import {GitVersion} from './git-version'
// Auth header not supported before 2.9
@@ -154,22 +155,10 @@ class GitCommandManager {
args.push(arg)
}
- let attempt = 1
- const maxAttempts = 3
- while (attempt <= maxAttempts) {
- const allowAllExitCodes = attempt < maxAttempts
- const output = await this.execGit(args, allowAllExitCodes)
- if (output.exitCode === 0) {
- break
- }
-
- const seconds = this.getRandomIntInclusive(1, 10)
- core.warning(
- `Git fetch failed with exit code ${output.exitCode}. Waiting ${seconds} seconds before trying again.`
- )
- await this.sleep(seconds * 1000)
- attempt++
- }
+ const that = this
+ await retryHelper.execute(async () => {
+ await that.execGit(args)
+ })
}
getWorkingDirectory(): string {
@@ -192,22 +181,10 @@ class GitCommandManager {
async lfsFetch(ref: string): Promise<void> {
const args = ['lfs', 'fetch', 'origin', ref]
- let attempt = 1
- const maxAttempts = 3
- while (attempt <= maxAttempts) {
- const allowAllExitCodes = attempt < maxAttempts
- const output = await this.execGit(args, allowAllExitCodes)
- if (output.exitCode === 0) {
- break
- }
-
- const seconds = this.getRandomIntInclusive(1, 10)
- core.warning(
- `Git lfs fetch failed with exit code ${output.exitCode}. Waiting ${seconds} seconds before trying again.`
- )
- await this.sleep(seconds * 1000)
- attempt++
- }
+ const that = this
+ await retryHelper.execute(async () => {
+ await that.execGit(args)
+ })
}
async lfsInstall(): Promise<void> {
@@ -381,16 +358,6 @@ class GitCommandManager {
core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent
}
-
- private getRandomIntInclusive(minimum: number, maximum: number): number {
- minimum = Math.floor(minimum)
- maximum = Math.floor(maximum)
- return Math.floor(Math.random() * (maximum - minimum + 1)) + minimum
- }
-
- private async sleep(milliseconds): Promise<void> {
- return new Promise(resolve => setTimeout(resolve, milliseconds))
- }
}
class GitOutput {