mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 15:47:36 +00:00 
			
		
		
		
	.
This commit is contained in:
		| @@ -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) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 eric sciple
					eric sciple