mirror of
https://code.forgejo.org/actions/checkout.git
synced 2026-06-30 00:28:54 +00:00
Pin GIT_CONFIG_GLOBAL to the temp config during global auth setup
configureTempGlobalConfig isolates global git config by overriding HOME to a temporary directory. But GIT_CONFIG_GLOBAL takes precedence over HOME when git locates the global config file, so when a workflow already has GIT_CONFIG_GLOBAL set in the environment, 'git config --global' writes land in that file instead of the temporary config. replaceTokenPlaceholder then reads the temporary config, cannot find the placeholder, and fails with 'Unable to replace auth placeholder'. Set GIT_CONFIG_GLOBAL to the temporary config alongside the HOME override so global config operations always target the temp file regardless of any inherited value, and unset it again in removeGlobalConfig. Assisted-By: Claude Opus 4.8
This commit is contained in:
parent
df4cb1c069
commit
e1d91899ae
3 changed files with 34 additions and 2 deletions
|
|
@ -902,6 +902,25 @@ describe('git-auth-helper tests', () => {
|
|||
}
|
||||
})
|
||||
|
||||
const configureGlobalAuth_overridesGitConfigGlobal =
|
||||
'configureGlobalAuth overrides GIT_CONFIG_GLOBAL'
|
||||
it(configureGlobalAuth_overridesGitConfigGlobal, async () => {
|
||||
// Arrange
|
||||
await setup(configureGlobalAuth_overridesGitConfigGlobal)
|
||||
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
||||
|
||||
// Act
|
||||
await authHelper.configureAuth()
|
||||
await authHelper.configureGlobalAuth()
|
||||
|
||||
// Assert GIT_CONFIG_GLOBAL is pinned to the temporary global config, so an
|
||||
// inherited GIT_CONFIG_GLOBAL cannot redirect --global writes
|
||||
expect(git.env['HOME']).toBeTruthy()
|
||||
expect(git.env['GIT_CONFIG_GLOBAL']).toBe(
|
||||
path.join(git.env['HOME'], '.gitconfig')
|
||||
)
|
||||
})
|
||||
|
||||
const removeGlobalConfig_removesOverride =
|
||||
'removeGlobalConfig removes override'
|
||||
it(removeGlobalConfig_removesOverride, async () => {
|
||||
|
|
@ -912,6 +931,7 @@ describe('git-auth-helper tests', () => {
|
|||
await authHelper.configureGlobalAuth()
|
||||
const homeOverride = git.env['HOME'] // Sanity check
|
||||
expect(homeOverride).toBeTruthy()
|
||||
expect(git.env['GIT_CONFIG_GLOBAL']).toBeTruthy()
|
||||
await fs.promises.stat(path.join(git.env['HOME'], '.gitconfig'))
|
||||
|
||||
// Act
|
||||
|
|
@ -919,6 +939,7 @@ describe('git-auth-helper tests', () => {
|
|||
|
||||
// Assert
|
||||
expect(git.env['HOME']).toBeUndefined()
|
||||
expect(git.env['GIT_CONFIG_GLOBAL']).toBeUndefined()
|
||||
try {
|
||||
await fs.promises.stat(homeOverride)
|
||||
throw new Error(`Should have been deleted '${homeOverride}'`)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue