This commit is contained in:
eric sciple
2025-10-17 00:18:04 +00:00
parent f8060825ea
commit c9518fb408
2 changed files with 32 additions and 13 deletions

View File

@@ -455,23 +455,28 @@ class GitAuthHelper {
await this.removeGitConfig(this.tokenConfigKey)
await this.removeSubmoduleGitConfig(this.tokenConfigKey)
// Collect credentials config paths that need to be removed
const credentialsPaths = new Set<string>()
// Remove includeIf entries that point to git-credentials-*.config files
await this.removeIncludeIfCredentials()
const mainCredentialsPaths = await this.removeIncludeIfCredentials()
mainCredentialsPaths.forEach(path => credentialsPaths.add(path))
// Remove submodule includeIf entries that point to git-credentials-*.config files
const submoduleConfigPaths = await this.git.getSubmoduleConfigPaths(true)
for (const configPath of submoduleConfigPaths) {
await this.removeIncludeIfCredentials(configPath)
const submoduleCredentialsPaths = await this.removeIncludeIfCredentials(configPath)
submoduleCredentialsPaths.forEach(path => credentialsPaths.add(path))
}
// Remove credentials config file
if (this.credentialsConfigPath) {
// Remove credentials config files
for (const credentialsPath of credentialsPaths) {
try {
await io.rmRF(this.credentialsConfigPath)
await io.rmRF(credentialsPath)
} catch (err) {
core.debug(`${(err as any)?.message ?? err}`)
core.warning(
`Failed to remove credentials config '${this.credentialsConfigPath}'`
`Failed to remove credentials config '${credentialsPath}'`
)
}
}
@@ -507,8 +512,11 @@ class GitAuthHelper {
/**
* Removes includeIf entries that point to git-credentials-*.config files.
* @param configPath Optional path to a specific git config file to operate on
* @returns Array of unique credentials config file paths that were found and removed
*/
private async removeIncludeIfCredentials(configPath?: string): Promise<void> {
private async removeIncludeIfCredentials(configPath?: string): Promise<string[]> {
const credentialsPaths = new Set<string>()
try {
// Get all includeIf.gitdir keys
const keys = await this.git.tryGetConfigKeys('^includeIf\\.gitdir:', false, configPath)
@@ -520,6 +528,7 @@ class GitAuthHelper {
// Remove only values that match git-credentials-<uuid>.config pattern
for (const value of values) {
if (this.testCredentialsConfigPath(value)) {
credentialsPaths.add(value)
await this.git.tryConfigUnsetValue(key, value, false, configPath)
}
}
@@ -533,6 +542,8 @@ class GitAuthHelper {
core.debug(`Error during includeIf cleanup: ${err}`)
}
}
return Array.from(credentialsPaths)
}
/**