mirror of
https://code.forgejo.org/actions/checkout.git
synced 2025-04-24 04:15:33 +00:00
.
This commit is contained in:
parent
d415b27760
commit
306dc1c898
4 changed files with 47 additions and 14 deletions
|
@ -5,6 +5,10 @@ import * as io from '@actions/io'
|
|||
import * as path from 'path'
|
||||
import {GitVersion} from './git-version'
|
||||
|
||||
// Auth header not supported before 2.9
|
||||
// Wire protocol v2 not supported before 2.18
|
||||
export const MinimumGitVersion = new GitVersion('2.18')
|
||||
|
||||
export interface IGitCommandManager {
|
||||
branchDelete(remote: boolean, branch: string): Promise<void>
|
||||
branchExists(remote: boolean, pattern: string): Promise<boolean>
|
||||
|
@ -338,13 +342,9 @@ class GitCommandManager {
|
|||
}
|
||||
|
||||
// Minimum git version
|
||||
// Note:
|
||||
// - Auth header not supported before 2.9
|
||||
// - Wire protocol v2 not supported before 2.18
|
||||
const minimumGitVersion = new GitVersion('2.18')
|
||||
if (!gitVersion.checkMinimum(minimumGitVersion)) {
|
||||
if (!gitVersion.checkMinimum(MinimumGitVersion)) {
|
||||
throw new Error(
|
||||
`Minimum required git version is ${minimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
|
||||
`Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -79,6 +79,12 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
|
|||
}
|
||||
|
||||
if (!git || `${1}` == '1') {
|
||||
core.info(
|
||||
`Git version ${gitCommandManager.MinimumGitVersion} was not found in the PATH.`
|
||||
)
|
||||
core.info(
|
||||
`Instead downloading the repository files using the GitHub REST API.`
|
||||
)
|
||||
await githubApiHelper.downloadRepository(
|
||||
settings.accessToken,
|
||||
settings.repositoryOwner,
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
import * as assert from 'assert'
|
||||
import * as core from '@actions/core'
|
||||
import * as exec from '@actions/exec'
|
||||
import * as fs from 'fs'
|
||||
import * as github from '@actions/github'
|
||||
import * as io from '@actions/io'
|
||||
import * as path from 'path'
|
||||
import {ReposGetArchiveLinkParams} from '@octokit/rest'
|
||||
import {defaultCoreCipherList} from 'constants'
|
||||
import {ExecOptions} from '@actions/exec/lib/interfaces'
|
||||
|
||||
const IS_WINDOWS = process.platform === 'win32'
|
||||
|
||||
|
@ -17,13 +25,21 @@ export async function downloadRepository(
|
|||
repo: repo,
|
||||
ref: ref
|
||||
}
|
||||
// todo: retry
|
||||
const response = await octokit.repos.getArchiveLink(params)
|
||||
if (response.status != 200) {
|
||||
throw new Error(
|
||||
`GitHub API call failed with response status '${response.status}': ${response.data}`
|
||||
`Unexpected response from GitHub API. Status: '${response.status}'; Data: '${response.data}'`
|
||||
)
|
||||
}
|
||||
console.log(`status=${response.status}`)
|
||||
console.log(`headers=${JSON.stringify(response.headers)}`)
|
||||
console.log(`data=${JSON.stringify(typeof response.data)}`)
|
||||
const runnerTemp = process.env['RUNNER_TEMP'] as string
|
||||
assert.ok(runnerTemp, 'RUNNER_TEMP not defined')
|
||||
const archiveFile = path.join(runnerTemp, 'checkout.tar.gz')
|
||||
await fs.promises.writeFile(archiveFile, response.data)
|
||||
await exec.exec(`tar -xzf "${archiveFile}"`, [], {
|
||||
cwd: repositoryPath
|
||||
} as ExecOptions)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue