mirror of
https://github.com/actions/checkout.git
synced 2024-11-15 17:53:51 +08:00
Allow configuration of fetch.parallel (#2)
This commit is contained in:
parent
edc3278d02
commit
4475b1ceed
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@ -157,7 +157,7 @@ jobs:
|
|||||||
ref: test-data/v2/submodule-ssh-url
|
ref: test-data/v2/submodule-ssh-url
|
||||||
path: submodules-true
|
path: submodules-true
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
submodulesFetchJobs: "10"
|
submodules-fetch-jobs: "10"
|
||||||
- name: Verify submodules true
|
- name: Verify submodules true
|
||||||
run: __test__/verify-submodules-with-jobs.sh
|
run: __test__/verify-submodules-with-jobs.sh
|
||||||
|
|
||||||
|
@ -94,6 +94,12 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/
|
|||||||
# Default: false
|
# Default: false
|
||||||
fetch-tags: ''
|
fetch-tags: ''
|
||||||
|
|
||||||
|
# Specifies the maximal number of fetch operations to be run in parallel at a time
|
||||||
|
# (submodules, or remotes when the --multiple option of git-fetch is in effect). A
|
||||||
|
# value of 0 will give some reasonable default. If unset, it defaults to 1.
|
||||||
|
# Default: 1
|
||||||
|
fetch-parallel: ''
|
||||||
|
|
||||||
# Whether to show progress status output when fetching.
|
# Whether to show progress status output when fetching.
|
||||||
# Default: true
|
# Default: true
|
||||||
show-progress: ''
|
show-progress: ''
|
||||||
@ -115,7 +121,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/
|
|||||||
# integer allows up to that number of submodules fetched in parallel. A value of 0
|
# integer allows up to that number of submodules fetched in parallel. A value of 0
|
||||||
# will give some reasonable default. If unset, it defaults to 1.
|
# will give some reasonable default. If unset, it defaults to 1.
|
||||||
# Default: 1
|
# Default: 1
|
||||||
submodulesFetchJobs: ''
|
submodules-fetch-jobs: ''
|
||||||
|
|
||||||
# Add repository path as safe.directory for Git global config by running `git
|
# Add repository path as safe.directory for Git global config by running `git
|
||||||
# config --global --add safe.directory <path>`
|
# config --global --add safe.directory <path>`
|
||||||
|
@ -807,11 +807,12 @@ async function setup(testName: string): Promise<void> {
|
|||||||
sparseCheckoutConeMode: true,
|
sparseCheckoutConeMode: true,
|
||||||
fetchDepth: 1,
|
fetchDepth: 1,
|
||||||
fetchTags: false,
|
fetchTags: false,
|
||||||
|
fetchParallel: 1,
|
||||||
showProgress: true,
|
showProgress: true,
|
||||||
lfs: false,
|
lfs: false,
|
||||||
submodules: false,
|
submodules: false,
|
||||||
nestedSubmodules: false,
|
nestedSubmodules: false,
|
||||||
submodulesFetchJobs: '1',
|
submodulesFetchJobs: 1,
|
||||||
persistCredentials: true,
|
persistCredentials: true,
|
||||||
ref: 'refs/heads/main',
|
ref: 'refs/heads/main',
|
||||||
repositoryName: 'my-repo',
|
repositoryName: 'my-repo',
|
||||||
|
@ -73,6 +73,11 @@ inputs:
|
|||||||
fetch-tags:
|
fetch-tags:
|
||||||
description: 'Whether to fetch tags, even if fetch-depth > 0.'
|
description: 'Whether to fetch tags, even if fetch-depth > 0.'
|
||||||
default: false
|
default: false
|
||||||
|
fetch-parallel:
|
||||||
|
description: >
|
||||||
|
Specifies the maximal number of fetch operations to be run in parallel at a time (submodules, or remotes when the --multiple option of git-fetch is in effect).
|
||||||
|
A value of 0 will give some reasonable default. If unset, it defaults to 1.
|
||||||
|
default: 1
|
||||||
show-progress:
|
show-progress:
|
||||||
description: 'Whether to show progress status output when fetching.'
|
description: 'Whether to show progress status output when fetching.'
|
||||||
default: true
|
default: true
|
||||||
@ -88,7 +93,7 @@ inputs:
|
|||||||
When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
|
When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
|
||||||
converted to HTTPS.
|
converted to HTTPS.
|
||||||
default: false
|
default: false
|
||||||
submodulesFetchJobs:
|
submodules-fetch-jobs:
|
||||||
description: >
|
description: >
|
||||||
Specifies how many submodules are fetched/cloned at the same time. A positive integer allows up to that number of submodules fetched in parallel. A value of 0 will give some reasonable default. If unset, it defaults to 1.
|
Specifies how many submodules are fetched/cloned at the same time. A positive integer allows up to that number of submodules fetched in parallel. A value of 0 will give some reasonable default. If unset, it defaults to 1.
|
||||||
default: 1
|
default: 1
|
||||||
|
20
dist/index.js
vendored
20
dist/index.js
vendored
@ -1243,6 +1243,7 @@ function getSource(settings) {
|
|||||||
}
|
}
|
||||||
// Fetch
|
// Fetch
|
||||||
core.startGroup('Fetching the repository');
|
core.startGroup('Fetching the repository');
|
||||||
|
yield git.config('fetch.parallel', settings.fetchParallel.toString(), true);
|
||||||
const fetchOptions = {};
|
const fetchOptions = {};
|
||||||
if (settings.filter) {
|
if (settings.filter) {
|
||||||
fetchOptions.filter = settings.filter;
|
fetchOptions.filter = settings.filter;
|
||||||
@ -1304,7 +1305,7 @@ function getSource(settings) {
|
|||||||
core.endGroup();
|
core.endGroup();
|
||||||
// Checkout submodules
|
// Checkout submodules
|
||||||
core.startGroup('Fetching submodules');
|
core.startGroup('Fetching submodules');
|
||||||
yield git.config('submodule.fetchJobs', settings.submodulesFetchJobs);
|
yield git.config('submodule.fetchJobs', settings.submodulesFetchJobs.toString(), true);
|
||||||
yield git.submoduleSync(settings.nestedSubmodules);
|
yield git.submoduleSync(settings.nestedSubmodules);
|
||||||
yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules);
|
yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules);
|
||||||
yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules);
|
yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules);
|
||||||
@ -1753,6 +1754,12 @@ function getInputs() {
|
|||||||
result.fetchTags =
|
result.fetchTags =
|
||||||
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE';
|
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE';
|
||||||
core.debug(`fetch tags = ${result.fetchTags}`);
|
core.debug(`fetch tags = ${result.fetchTags}`);
|
||||||
|
// Fetch tags
|
||||||
|
result.fetchParallel = Math.floor(Number(core.getInput('fetch-parallel') || '1'));
|
||||||
|
if (isNaN(result.fetchParallel) || result.fetchParallel < 0) {
|
||||||
|
result.fetchParallel = 0;
|
||||||
|
}
|
||||||
|
core.debug(`fetch parallel = ${result.fetchParallel}`);
|
||||||
// Show fetch progress
|
// Show fetch progress
|
||||||
result.showProgress =
|
result.showProgress =
|
||||||
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE';
|
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE';
|
||||||
@ -1771,12 +1778,17 @@ function getInputs() {
|
|||||||
else if (submodulesString == 'TRUE') {
|
else if (submodulesString == 'TRUE') {
|
||||||
result.submodules = true;
|
result.submodules = true;
|
||||||
}
|
}
|
||||||
result.submodulesFetchJobs = core.getInput('submodulesFetchJobs') || '1';
|
result.submodulesFetchJobs = Math.floor(Number(core.getInput('submodules-fetch-jobs') || '1'));
|
||||||
|
if (isNaN(result.submodulesFetchJobs) || result.submodulesFetchJobs < 0) {
|
||||||
|
result.submodulesFetchJobs = 0;
|
||||||
|
}
|
||||||
core.debug(`submodules = ${result.submodules}`);
|
core.debug(`submodules = ${result.submodules}`);
|
||||||
core.debug(`recursive submodules = ${result.nestedSubmodules}`);
|
core.debug(`recursive submodules = ${result.nestedSubmodules}`);
|
||||||
core.debug(`submodules fetchJobs= ${result.submodulesFetchJobs}`);
|
core.debug(`submodules submodules-fetch-jobs = ${result.submodulesFetchJobs}`);
|
||||||
// Auth token
|
// Auth token
|
||||||
result.authToken = core.getInput('token', { required: true });
|
result.authToken = core.getInput('token', {
|
||||||
|
required: true
|
||||||
|
});
|
||||||
// SSH
|
// SSH
|
||||||
result.sshKey = core.getInput('ssh-key');
|
result.sshKey = core.getInput('ssh-key');
|
||||||
result.sshKnownHosts = core.getInput('ssh-known-hosts');
|
result.sshKnownHosts = core.getInput('ssh-known-hosts');
|
||||||
|
@ -153,6 +153,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
|||||||
|
|
||||||
// Fetch
|
// Fetch
|
||||||
core.startGroup('Fetching the repository')
|
core.startGroup('Fetching the repository')
|
||||||
|
await git.config('fetch.parallel', settings.fetchParallel.toString(), true)
|
||||||
const fetchOptions: {
|
const fetchOptions: {
|
||||||
filter?: string
|
filter?: string
|
||||||
fetchDepth?: number
|
fetchDepth?: number
|
||||||
@ -232,7 +233,11 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
|||||||
|
|
||||||
// Checkout submodules
|
// Checkout submodules
|
||||||
core.startGroup('Fetching submodules')
|
core.startGroup('Fetching submodules')
|
||||||
await git.config('submodule.fetchJobs', settings.submodulesFetchJobs)
|
await git.config(
|
||||||
|
'submodule.fetchJobs',
|
||||||
|
settings.submodulesFetchJobs.toString(),
|
||||||
|
true
|
||||||
|
)
|
||||||
await git.submoduleSync(settings.nestedSubmodules)
|
await git.submoduleSync(settings.nestedSubmodules)
|
||||||
await git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules)
|
await git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules)
|
||||||
await git.submoduleForeach(
|
await git.submoduleForeach(
|
||||||
|
@ -54,6 +54,11 @@ export interface IGitSourceSettings {
|
|||||||
*/
|
*/
|
||||||
fetchTags: boolean
|
fetchTags: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates the maximal number of fetch operations to be run in parallel at a time
|
||||||
|
*/
|
||||||
|
fetchParallel: number
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether to use the --progress option when fetching
|
* Indicates whether to use the --progress option when fetching
|
||||||
*/
|
*/
|
||||||
@ -77,7 +82,7 @@ export interface IGitSourceSettings {
|
|||||||
/**
|
/**
|
||||||
* Indicates the number of parallel jobs to use when fetching submodules
|
* Indicates the number of parallel jobs to use when fetching submodules
|
||||||
*/
|
*/
|
||||||
submodulesFetchJobs: string
|
submodulesFetchJobs: number
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The auth token to use when fetching the repository
|
* The auth token to use when fetching the repository
|
||||||
|
@ -113,6 +113,15 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
|||||||
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'
|
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'
|
||||||
core.debug(`fetch tags = ${result.fetchTags}`)
|
core.debug(`fetch tags = ${result.fetchTags}`)
|
||||||
|
|
||||||
|
// Fetch tags
|
||||||
|
result.fetchParallel = Math.floor(
|
||||||
|
Number(core.getInput('fetch-parallel') || '1')
|
||||||
|
)
|
||||||
|
if (isNaN(result.fetchParallel) || result.fetchParallel < 0) {
|
||||||
|
result.fetchParallel = 0
|
||||||
|
}
|
||||||
|
core.debug(`fetch parallel = ${result.fetchParallel}`)
|
||||||
|
|
||||||
// Show fetch progress
|
// Show fetch progress
|
||||||
result.showProgress =
|
result.showProgress =
|
||||||
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'
|
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'
|
||||||
@ -132,13 +141,20 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
|||||||
} else if (submodulesString == 'TRUE') {
|
} else if (submodulesString == 'TRUE') {
|
||||||
result.submodules = true
|
result.submodules = true
|
||||||
}
|
}
|
||||||
result.submodulesFetchJobs = core.getInput('submodulesFetchJobs') || '1'
|
result.submodulesFetchJobs = Math.floor(
|
||||||
|
Number(core.getInput('submodules-fetch-jobs') || '1')
|
||||||
|
)
|
||||||
|
if (isNaN(result.submodulesFetchJobs) || result.submodulesFetchJobs < 0) {
|
||||||
|
result.submodulesFetchJobs = 0
|
||||||
|
}
|
||||||
core.debug(`submodules = ${result.submodules}`)
|
core.debug(`submodules = ${result.submodules}`)
|
||||||
core.debug(`recursive submodules = ${result.nestedSubmodules}`)
|
core.debug(`recursive submodules = ${result.nestedSubmodules}`)
|
||||||
core.debug(`submodules fetchJobs= ${result.submodulesFetchJobs}`)
|
core.debug(`submodules submodules-fetch-jobs = ${result.submodulesFetchJobs}`)
|
||||||
|
|
||||||
// Auth token
|
// Auth token
|
||||||
result.authToken = core.getInput('token', {required: true})
|
result.authToken = core.getInput('token', {
|
||||||
|
required: true
|
||||||
|
})
|
||||||
|
|
||||||
// SSH
|
// SSH
|
||||||
result.sshKey = core.getInput('ssh-key')
|
result.sshKey = core.getInput('ssh-key')
|
||||||
|
Loading…
Reference in New Issue
Block a user