This commit is contained in:
Xavier Chapron 2022-04-06 06:23:59 +02:00 committed by GitHub
commit 777fadabba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 58 additions and 0 deletions

View file

@ -41,6 +41,8 @@ export interface IGitCommandManager {
submoduleForeach(command: string, recursive: boolean): Promise<string>
submoduleSync(recursive: boolean): Promise<void>
submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void>
submoduleReset(recursive: boolean): Promise<void>
submoduleClean(recursive: boolean): Promise<void>
tagExists(pattern: string): Promise<boolean>
tryClean(): Promise<boolean>
tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean>
@ -326,6 +328,26 @@ class GitCommandManager {
await this.execGit(args)
}
async submoduleReset(recursive: boolean): Promise<void> {
const args = ['submodule', 'foreach']
if (recursive) {
args.push('--recursive')
}
args.push('git reset --hard')
await this.execGit(args)
}
async submoduleClean(recursive: boolean): Promise<void> {
const args = ['submodule', 'foreach']
if (recursive) {
args.push('--recursive')
}
args.push('git clean -ffdx')
await this.execGit(args)
}
async tagExists(pattern: string): Promise<boolean> {
const output = await this.execGit(['tag', '--list', pattern])
return !!output.stdout.trim()

View file

@ -176,6 +176,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
await authHelper.configureGlobalAuth()
core.endGroup()
// Clean existing submodules
if (settings.clean)
{
await git.submoduleReset(settings.nestedSubmodules)
await git.submoduleClean(settings.nestedSubmodules)
}
// Checkout submodules
core.startGroup('Fetching submodules')
await git.submoduleSync(settings.nestedSubmodules)