mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-04 05:58:40 +08:00 
			
		
		
		
	.
This commit is contained in:
		
							parent
							
								
									d415b27760
								
							
						
					
					
						commit
						306dc1c898
					
				
							
								
								
									
										25
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -4439,6 +4439,9 @@ const fshelper = __importStar(__webpack_require__(618));
 | 
			
		|||
const io = __importStar(__webpack_require__(1));
 | 
			
		||||
const path = __importStar(__webpack_require__(622));
 | 
			
		||||
const git_version_1 = __webpack_require__(559);
 | 
			
		||||
// Auth header not supported before 2.9
 | 
			
		||||
// Wire protocol v2 not supported before 2.18
 | 
			
		||||
exports.MinimumGitVersion = new git_version_1.GitVersion('2.18');
 | 
			
		||||
function CreateCommandManager(workingDirectory, lfs) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        return yield GitCommandManager.createCommandManager(workingDirectory, lfs);
 | 
			
		||||
| 
						 | 
				
			
			@ -4719,12 +4722,8 @@ class GitCommandManager {
 | 
			
		|||
                throw new Error('Unable to determine git version');
 | 
			
		||||
            }
 | 
			
		||||
            // Minimum git version
 | 
			
		||||
            // Note:
 | 
			
		||||
            // - Auth header not supported before 2.9
 | 
			
		||||
            // - Wire protocol v2 not supported before 2.18
 | 
			
		||||
            const minimumGitVersion = new git_version_1.GitVersion('2.18');
 | 
			
		||||
            if (!gitVersion.checkMinimum(minimumGitVersion)) {
 | 
			
		||||
                throw new Error(`Minimum required git version is ${minimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`);
 | 
			
		||||
            if (!gitVersion.checkMinimum(exports.MinimumGitVersion)) {
 | 
			
		||||
                throw new Error(`Minimum required git version is ${exports.MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`);
 | 
			
		||||
            }
 | 
			
		||||
            if (this.lfs) {
 | 
			
		||||
                // Git-lfs version
 | 
			
		||||
| 
						 | 
				
			
			@ -4844,6 +4843,8 @@ function getSource(settings) {
 | 
			
		|||
            yield prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean);
 | 
			
		||||
        }
 | 
			
		||||
        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.`);
 | 
			
		||||
            yield githubApiHelper.downloadRepository(settings.accessToken, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.repositoryPath);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
| 
						 | 
				
			
			@ -8087,7 +8088,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		|||
    return result;
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const assert = __importStar(__webpack_require__(357));
 | 
			
		||||
const exec = __importStar(__webpack_require__(986));
 | 
			
		||||
const fs = __importStar(__webpack_require__(747));
 | 
			
		||||
const github = __importStar(__webpack_require__(469));
 | 
			
		||||
const path = __importStar(__webpack_require__(622));
 | 
			
		||||
const IS_WINDOWS = process.platform === 'win32';
 | 
			
		||||
function downloadRepository(accessToken, owner, repo, ref, repositoryPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
| 
						 | 
				
			
			@ -8098,13 +8103,19 @@ function downloadRepository(accessToken, owner, repo, ref, repositoryPath) {
 | 
			
		|||
            repo: repo,
 | 
			
		||||
            ref: ref
 | 
			
		||||
        };
 | 
			
		||||
        // todo: retry
 | 
			
		||||
        const response = yield octokit.repos.getArchiveLink(params);
 | 
			
		||||
        if (response.status != 200) {
 | 
			
		||||
            throw new Error(`GitHub API call failed with response status '${response.status}': ${response.data}`);
 | 
			
		||||
            throw new Error(`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'];
 | 
			
		||||
        assert.ok(runnerTemp, 'RUNNER_TEMP not defined');
 | 
			
		||||
        const archiveFile = path.join(runnerTemp, 'checkout.tar.gz');
 | 
			
		||||
        yield fs.promises.writeFile(archiveFile, response.data);
 | 
			
		||||
        yield exec.exec(`tar -xzf "${archiveFile}"`, [], { cwd: repositoryPath });
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.downloadRepository = downloadRepository;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
		Reference in New Issue
	
	Block a user