mirror of
https://github.com/actions/checkout.git
synced 2024-11-29 14:09:32 +01:00
Add fetchJobs option to parallelize submodule updates
This commit is contained in:
parent
2036a08e25
commit
ad5dc19390
9 changed files with 49 additions and 5 deletions
|
@ -93,6 +93,11 @@ Refer [here](https://github.com/actions/checkout/blob/v1/README.md) for previous
|
|||
# Default: 1
|
||||
fetch-depth: ''
|
||||
|
||||
# Number of fetches to perform simultaneously when updating submodules. 0
|
||||
# indicates default (serial updates).
|
||||
# Default: 0
|
||||
fetch-jobs: ''
|
||||
|
||||
# Whether to download Git-LFS files
|
||||
# Default: false
|
||||
lfs: ''
|
||||
|
|
|
@ -760,6 +760,7 @@ async function setup(testName: string): Promise<void> {
|
|||
clean: true,
|
||||
commit: '',
|
||||
fetchDepth: 1,
|
||||
fetchJobs: 0,
|
||||
lfs: false,
|
||||
submodules: false,
|
||||
nestedSubmodules: false,
|
||||
|
|
|
@ -75,6 +75,7 @@ describe('input-helper tests', () => {
|
|||
expect(settings.commit).toBeTruthy()
|
||||
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
||||
expect(settings.fetchDepth).toBe(1)
|
||||
expect(settings.fetchJobs).toBe(0)
|
||||
expect(settings.lfs).toBe(false)
|
||||
expect(settings.ref).toBe('refs/heads/some-ref')
|
||||
expect(settings.repositoryName).toBe('some-repo')
|
||||
|
|
|
@ -56,6 +56,9 @@ inputs:
|
|||
fetch-depth:
|
||||
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
|
||||
default: 1
|
||||
fetch-jobs:
|
||||
description: 'Number of fetches to perform simultaneously when updating submodules. 0 indicates default (serial updates).'
|
||||
default: 0
|
||||
lfs:
|
||||
description: 'Whether to download Git-LFS files'
|
||||
default: false
|
||||
|
|
13
dist/index.js
vendored
13
dist/index.js
vendored
|
@ -5939,7 +5939,7 @@ class GitCommandManager {
|
|||
yield this.execGit(args);
|
||||
});
|
||||
}
|
||||
submoduleUpdate(fetchDepth, recursive) {
|
||||
submoduleUpdate(fetchDepth, recursive, fetchJobs) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const args = ['-c', 'protocol.version=2'];
|
||||
args.push('submodule', 'update', '--init', '--force');
|
||||
|
@ -5949,6 +5949,9 @@ class GitCommandManager {
|
|||
if (recursive) {
|
||||
args.push('--recursive');
|
||||
}
|
||||
if (fetchJobs > 0) {
|
||||
args.push(`--jobs=${fetchJobs}`);
|
||||
}
|
||||
yield this.execGit(args);
|
||||
});
|
||||
}
|
||||
|
@ -6252,7 +6255,7 @@ function getSource(settings) {
|
|||
// Checkout submodules
|
||||
core.startGroup('Fetching submodules');
|
||||
yield git.submoduleSync(settings.nestedSubmodules);
|
||||
yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules);
|
||||
yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules, settings.fetchJobs);
|
||||
yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules);
|
||||
core.endGroup();
|
||||
// Persist credentials
|
||||
|
@ -14567,6 +14570,12 @@ function getInputs() {
|
|||
result.fetchDepth = 0;
|
||||
}
|
||||
core.debug(`fetch depth = ${result.fetchDepth}`);
|
||||
// Fetch jobs
|
||||
result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '0'));
|
||||
if (isNaN(result.fetchJobs) || result.fetchJobs < 0) {
|
||||
result.fetchJobs = 0;
|
||||
}
|
||||
core.debug(`fetch jobs = ${result.fetchJobs}`);
|
||||
// LFS
|
||||
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE';
|
||||
core.debug(`lfs = ${result.lfs}`);
|
||||
|
|
|
@ -39,7 +39,11 @@ export interface IGitCommandManager {
|
|||
shaExists(sha: string): Promise<boolean>
|
||||
submoduleForeach(command: string, recursive: boolean): Promise<string>
|
||||
submoduleSync(recursive: boolean): Promise<void>
|
||||
submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void>
|
||||
submoduleUpdate(
|
||||
fetchDepth: number,
|
||||
recursive: boolean,
|
||||
fetchJobs: number
|
||||
): Promise<void>
|
||||
tagExists(pattern: string): Promise<boolean>
|
||||
tryClean(): Promise<boolean>
|
||||
tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean>
|
||||
|
@ -308,7 +312,11 @@ class GitCommandManager {
|
|||
await this.execGit(args)
|
||||
}
|
||||
|
||||
async submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void> {
|
||||
async submoduleUpdate(
|
||||
fetchDepth: number,
|
||||
recursive: boolean,
|
||||
fetchJobs: number
|
||||
): Promise<void> {
|
||||
const args = ['-c', 'protocol.version=2']
|
||||
args.push('submodule', 'update', '--init', '--force')
|
||||
if (fetchDepth > 0) {
|
||||
|
@ -319,6 +327,10 @@ class GitCommandManager {
|
|||
args.push('--recursive')
|
||||
}
|
||||
|
||||
if (fetchJobs > 0) {
|
||||
args.push(`--jobs=${fetchJobs}`)
|
||||
}
|
||||
|
||||
await this.execGit(args)
|
||||
}
|
||||
|
||||
|
|
|
@ -181,7 +181,8 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
|||
await git.submoduleSync(settings.nestedSubmodules)
|
||||
await git.submoduleUpdate(
|
||||
settings.fetchDepth,
|
||||
settings.nestedSubmodules
|
||||
settings.nestedSubmodules,
|
||||
settings.fetchJobs
|
||||
)
|
||||
await git.submoduleForeach(
|
||||
'git config --local gc.auto 0',
|
||||
|
|
|
@ -34,6 +34,11 @@ export interface IGitSourceSettings {
|
|||
*/
|
||||
fetchDepth: number
|
||||
|
||||
/**
|
||||
* The number of fetches to perform simultaneously when updating submodules
|
||||
*/
|
||||
fetchJobs: number
|
||||
|
||||
/**
|
||||
* Indicates whether to fetch LFS objects
|
||||
*/
|
||||
|
|
|
@ -88,6 +88,13 @@ export function getInputs(): IGitSourceSettings {
|
|||
}
|
||||
core.debug(`fetch depth = ${result.fetchDepth}`)
|
||||
|
||||
// Fetch jobs
|
||||
result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '0'))
|
||||
if (isNaN(result.fetchJobs) || result.fetchJobs < 0) {
|
||||
result.fetchJobs = 0
|
||||
}
|
||||
core.debug(`fetch jobs = ${result.fetchJobs}`)
|
||||
|
||||
// LFS
|
||||
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
|
||||
core.debug(`lfs = ${result.lfs}`)
|
||||
|
|
Loading…
Reference in a new issue