Public Access
1
0
mirror of https://github.com/actions/checkout.git synced 2025-07-15 13:13:32 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
1e31de5234 Update docs 2023-10-17 15:38:19 +00:00
51 changed files with 13431 additions and 32496 deletions

View File

@ -72,16 +72,6 @@ jobs:
shell: bash shell: bash
run: __test__/verify-side-by-side.sh run: __test__/verify-side-by-side.sh
# Filter
- name: Fetch filter
uses: ./
with:
filter: 'blob:none'
path: fetch-filter
- name: Verify fetch filter
run: __test__/verify-fetch-filter.sh
# Sparse checkout # Sparse checkout
- name: Sparse checkout - name: Sparse checkout
uses: ./ uses: ./

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/get-intrinsic.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/has-symbols.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/has.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/object-inspect.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/qs.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/side-channel.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/typed-rest-client.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/underscore.dep.yml generated Normal file

Binary file not shown.

View File

@ -1,8 +1,5 @@
# Changelog # Changelog
## v4.1.0
- [Add support for partial checkout filters](https://github.com/actions/checkout/pull/1396)
## v4.0.0 ## v4.0.0
- [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067) - [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
- [Update to node20](https://github.com/actions/checkout/pull/1436) - [Update to node20](https://github.com/actions/checkout/pull/1436)

View File

@ -12,9 +12,8 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
# What's new # What's new
- Updated default runtime to node20 - Updated to the node20 runtime by default
- This requires a minimum Actions Runner version of [v2.308.0](https://github.com/actions/runner/releases/tag/v2.308.0). - This requires a minimum [Actions Runner](https://github.com/actions/runner/releases/tag/v2.285.0) version of v2.308.0 to run, which is by default available in GHES 3.11 or later.
- Added support for fetching without the `--progress` option
# Usage # Usage
@ -75,12 +74,8 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
# Default: true # Default: true
clean: '' clean: ''
# Partially clone against a given filter. Overrides sparse-checkout if set.
# Default: null
filter: ''
# Do a sparse checkout on given patterns. Each pattern should be separated with # Do a sparse checkout on given patterns. Each pattern should be separated with
# new lines. # new lines
# Default: null # Default: null
sparse-checkout: '' sparse-checkout: ''

View File

@ -169,9 +169,8 @@ describe('git-auth-helper tests', () => {
// Mock fs.promises.readFile // Mock fs.promises.readFile
const realReadFile = fs.promises.readFile const realReadFile = fs.promises.readFile
jest jest.spyOn(fs.promises, 'readFile').mockImplementation(
.spyOn(fs.promises, 'readFile') async (file: any, options: any): Promise<Buffer> => {
.mockImplementation(async (file: any, options: any): Promise<Buffer> => {
const userKnownHostsPath = path.join( const userKnownHostsPath = path.join(
os.homedir(), os.homedir(),
'.ssh', '.ssh',
@ -182,7 +181,8 @@ describe('git-auth-helper tests', () => {
} }
return await realReadFile(file, options) return await realReadFile(file, options)
}) }
)
// Act // Act
const authHelper = gitAuthHelper.createAuthHelper(git, settings) const authHelper = gitAuthHelper.createAuthHelper(git, settings)
@ -802,7 +802,6 @@ async function setup(testName: string): Promise<void> {
authToken: 'some auth token', authToken: 'some auth token',
clean: true, clean: true,
commit: '', commit: '',
filter: undefined,
sparseCheckout: [], sparseCheckout: [],
sparseCheckoutConeMode: true, sparseCheckoutConeMode: true,
fetchDepth: 1, fetchDepth: 1,

View File

@ -79,7 +79,6 @@ describe('input-helper tests', () => {
expect(settings.clean).toBe(true) expect(settings.clean).toBe(true)
expect(settings.commit).toBeTruthy() expect(settings.commit).toBeTruthy()
expect(settings.commit).toBe('1234567890123456789012345678901234567890') expect(settings.commit).toBe('1234567890123456789012345678901234567890')
expect(settings.filter).toBe(undefined)
expect(settings.sparseCheckout).toBe(undefined) expect(settings.sparseCheckout).toBe(undefined)
expect(settings.sparseCheckoutConeMode).toBe(true) expect(settings.sparseCheckoutConeMode).toBe(true)
expect(settings.fetchDepth).toBe(1) expect(settings.fetchDepth).toBe(1)

View File

@ -7,11 +7,11 @@ let git: IGitCommandManager
describe('ref-helper tests', () => { describe('ref-helper tests', () => {
beforeEach(() => { beforeEach(() => {
git = {} as unknown as IGitCommandManager git = ({} as unknown) as IGitCommandManager
}) })
it('getCheckoutInfo requires git', async () => { it('getCheckoutInfo requires git', async () => {
const git = null as unknown as IGitCommandManager const git = (null as unknown) as IGitCommandManager
try { try {
await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit) await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit)
throw new Error('Should not reach here') throw new Error('Should not reach here')

View File

@ -68,7 +68,7 @@ describe('retry-helper tests', () => {
it('all attempts fail succeeds', async () => { it('all attempts fail succeeds', async () => {
let attempts = 0 let attempts = 0
let error: Error = null as unknown as Error let error: Error = (null as unknown) as Error
try { try {
await retryHelper.execute(() => { await retryHelper.execute(() => {
throw new Error(`some error ${++attempts}`) throw new Error(`some error ${++attempts}`)

View File

@ -1,16 +0,0 @@
#!/bin/bash
# Verify .git folder
if [ ! -d "./fetch-filter/.git" ]; then
echo "Expected ./fetch-filter/.git folder to exist"
exit 1
fi
# Verify .git/config contains partialclonefilter
CLONE_FILTER=$(git -C fetch-filter config --local --get remote.origin.partialclonefilter)
if [ "$CLONE_FILTER" != "blob:none" ]; then
echo "Expected ./fetch-filter/.git/config to have 'remote.origin.partialclonefilter' set to 'blob:none'"
exit 1
fi

View File

@ -53,15 +53,10 @@ inputs:
clean: clean:
description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching' description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
default: true default: true
filter:
description: >
Partially clone against a given filter.
Overrides sparse-checkout if set.
default: null
sparse-checkout: sparse-checkout:
description: > description: >
Do a sparse checkout on given patterns. Do a sparse checkout on given patterns.
Each pattern should be separated with new lines. Each pattern should be separated with new lines
default: null default: null
sparse-checkout-cone-mode: sparse-checkout-cone-mode:
description: > description: >

Binary file not shown.

Binary file not shown.

30691
dist/index.js vendored

File diff suppressed because one or more lines are too long

14879
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "checkout", "name": "checkout",
"version": "4.1.0", "version": "4.0.0",
"description": "checkout action", "description": "checkout action",
"main": "lib/main.js", "main": "lib/main.js",
"scripts": { "scripts": {
@ -28,28 +28,28 @@
}, },
"homepage": "https://github.com/actions/checkout#readme", "homepage": "https://github.com/actions/checkout#readme",
"dependencies": { "dependencies": {
"@actions/core": "^1.10.1", "@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.0.1",
"@actions/github": "file:actions-github-6.0.2.tgz", "@actions/github": "^5.0.0",
"@actions/io": "^1.1.3", "@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^1.1.2",
"uuid": "^3.3.3" "uuid": "^3.3.3"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^29.5.5", "@types/jest": "^27.0.2",
"@types/node": "^20.8.2", "@types/node": "^20.5.3",
"@types/uuid": "^3.4.6", "@types/uuid": "^3.4.6",
"@typescript-eslint/eslint-plugin": "^6.7.4", "@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^6.7.4", "@typescript-eslint/parser": "^5.45.0",
"@vercel/ncc": "^0.38.0", "@vercel/ncc": "^0.36.1",
"eslint": "^8.50.0", "eslint": "^7.32.0",
"eslint-plugin-github": "^4.10.1", "eslint-plugin-github": "^4.3.2",
"eslint-plugin-jest": "^27.4.2", "eslint-plugin-jest": "^25.7.0",
"jest": "^29.7.0", "jest": "^27.3.0",
"jest-circus": "^29.7.0", "jest-circus": "^27.3.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"prettier": "^3.0.3", "prettier": "^1.19.1",
"ts-jest": "^29.1.1", "ts-jest": "^27.0.7",
"typescript": "^5.2.2" "typescript": "^4.4.4"
} }
} }

View File

@ -18,9 +18,8 @@ export function directoryExistsSync(path: string, required?: boolean): boolean {
} }
throw new Error( throw new Error(
`Encountered an error when checking whether path '${path}' exists: ${ `Encountered an error when checking whether path '${path}' exists: ${(error as any)
(error as any)?.message ?? error ?.message ?? error}`
}`
) )
} }
@ -46,9 +45,8 @@ export function existsSync(path: string): boolean {
} }
throw new Error( throw new Error(
`Encountered an error when checking whether path '${path}' exists: ${ `Encountered an error when checking whether path '${path}' exists: ${(error as any)
(error as any)?.message ?? error ?.message ?? error}`
}`
) )
} }
@ -69,9 +67,8 @@ export function fileExistsSync(path: string): boolean {
} }
throw new Error( throw new Error(
`Encountered an error when checking whether path '${path}' exists: ${ `Encountered an error when checking whether path '${path}' exists: ${(error as any)
(error as any)?.message ?? error ?.message ?? error}`
}`
) )
} }

View File

@ -49,7 +49,7 @@ class GitAuthHelper {
gitSourceSettings: IGitSourceSettings | undefined gitSourceSettings: IGitSourceSettings | undefined
) { ) {
this.git = gitCommandManager this.git = gitCommandManager
this.settings = gitSourceSettings || ({} as unknown as IGitSourceSettings) this.settings = gitSourceSettings || (({} as unknown) as IGitSourceSettings)
// Token auth header // Token auth header
const serverUrl = urlHelper.getServerUrl(this.settings.githubServerUrl) const serverUrl = urlHelper.getServerUrl(this.settings.githubServerUrl)

View File

@ -159,13 +159,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
fetchTags?: boolean fetchTags?: boolean
showProgress?: boolean showProgress?: boolean
} = {} } = {}
if (settings.sparseCheckout) fetchOptions.filter = 'blob:none'
if (settings.filter) {
fetchOptions.filter = settings.filter
} else if (settings.sparseCheckout) {
fetchOptions.filter = 'blob:none'
}
if (settings.fetchDepth <= 0) { if (settings.fetchDepth <= 0) {
// Fetch all branches and tags // Fetch all branches and tags
let refSpec = refHelper.getRefSpecForAllHistory( let refSpec = refHelper.getRefSpecForAllHistory(

View File

@ -29,11 +29,6 @@ export interface IGitSourceSettings {
*/ */
clean: boolean clean: boolean
/**
* The filter determining which objects to include
*/
filter: string | undefined
/** /**
* The array of folders to make the sparse checkout * The array of folders to make the sparse checkout
*/ */

View File

@ -6,7 +6,7 @@ import * as workflowContextHelper from './workflow-context-helper'
import {IGitSourceSettings} from './git-source-settings' import {IGitSourceSettings} from './git-source-settings'
export async function getInputs(): Promise<IGitSourceSettings> { export async function getInputs(): Promise<IGitSourceSettings> {
const result = {} as unknown as IGitSourceSettings const result = ({} as unknown) as IGitSourceSettings
// GitHub workspace // GitHub workspace
let githubWorkspacePath = process.env['GITHUB_WORKSPACE'] let githubWorkspacePath = process.env['GITHUB_WORKSPACE']
@ -82,14 +82,6 @@ export async function getInputs(): Promise<IGitSourceSettings> {
result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE' result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
core.debug(`clean = ${result.clean}`) core.debug(`clean = ${result.clean}`)
// Filter
const filter = core.getInput('filter')
if (filter) {
result.filter = filter
}
core.debug(`filter = ${result.filter}`)
// Sparse checkout // Sparse checkout
const sparseCheckout = core.getMultilineInput('sparse-checkout') const sparseCheckout = core.getMultilineInput('sparse-checkout')
if (sparseCheckout.length) { if (sparseCheckout.length) {
@ -149,8 +141,7 @@ export async function getInputs(): Promise<IGitSourceSettings> {
(core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE' (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'
// Workflow organization ID // Workflow organization ID
result.workflowOrganizationId = result.workflowOrganizationId = await workflowContextHelper.getOrganizationId()
await workflowContextHelper.getOrganizationId()
// Set safe.directory in git global config. // Set safe.directory in git global config.
result.setSafeDirectory = result.setSafeDirectory =

View File

@ -23,7 +23,7 @@ export async function getCheckoutInfo(
throw new Error('Args ref and commit cannot both be empty') throw new Error('Args ref and commit cannot both be empty')
} }
const result = {} as unknown as ICheckoutInfo const result = ({} as unknown) as ICheckoutInfo
const upperRef = (ref || '').toUpperCase() const upperRef = (ref || '').toUpperCase()
// SHA only // SHA only

View File

@ -23,9 +23,8 @@ export async function getOrganizationId(): Promise<number | undefined> {
return id as number return id as number
} catch (err) { } catch (err) {
core.debug( core.debug(
`Unable to load organization ID from GITHUB_EVENT_PATH: ${ `Unable to load organization ID from GITHUB_EVENT_PATH: ${(err as any)
(err as any).message || err .message || err}`
}`
) )
} }
} }