Fix submodule git directory paths for includeIf

This commit is contained in:
eric sciple
2025-10-14 23:56:34 +00:00
parent 0f2eb6b146
commit 96c6589494
2 changed files with 15 additions and 21 deletions

15
dist/index.js vendored
View File

@ -289,16 +289,15 @@ class GitAuthHelper {
// For each submodule, configure includeIf entries pointing to the shared credentials file. // For each submodule, configure includeIf entries pointing to the shared credentials file.
// Configure both host and container paths to support Docker container actions. // Configure both host and container paths to support Docker container actions.
for (const configPath of configPaths) { for (const configPath of configPaths) {
// Submodule path // The config file is at .git/modules/submodule-name/config
const submodulePath = path.dirname(path.dirname(configPath)); let submoduleConfigDir = path.dirname(configPath);
submoduleConfigDir = submoduleConfigDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows
// Configure host includeIf // Configure host includeIf
let submoduleGitDir = path.join(submodulePath, '.git'); yield this.git.config(`includeIf.gitdir:${submoduleConfigDir}.path`, credentialsConfigPath, false, false, configPath);
submoduleGitDir = submoduleGitDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows
yield this.git.config(`includeIf.gitdir:${submoduleGitDir}.path`, credentialsConfigPath, false, false, configPath);
// Configure container includeIf // Configure container includeIf
let submoduleRelativePath = path.relative(workingDirectory, submodulePath); let relativeSubmoduleConfigDir = path.relative(githubWorkspace, submoduleConfigDir);
submoduleRelativePath = submoduleRelativePath.replace(/\\/g, '/'); // Use forward slashes, even on Windows relativeSubmoduleConfigDir = relativeSubmoduleConfigDir.replace(/\\/g, '/'); // Use forward slashes, even on Windows
const containerSubmoduleGitDir = path.posix.join(containerRepoPath, submoduleRelativePath, '.git'); const containerSubmoduleGitDir = path.posix.join('/github/workspace', relativeSubmoduleConfigDir);
yield this.git.config(`includeIf.gitdir:${containerSubmoduleGitDir}.path`, containerCredentialsPath, false, false, configPath); yield this.git.config(`includeIf.gitdir:${containerSubmoduleGitDir}.path`, containerCredentialsPath, false, false, configPath);
} }
if (this.settings.sshKey) { if (this.settings.sshKey) {

View File

@ -205,14 +205,13 @@ class GitAuthHelper {
// For each submodule, configure includeIf entries pointing to the shared credentials file. // For each submodule, configure includeIf entries pointing to the shared credentials file.
// Configure both host and container paths to support Docker container actions. // Configure both host and container paths to support Docker container actions.
for (const configPath of configPaths) { for (const configPath of configPaths) {
// Submodule path // The config file is at .git/modules/submodule-name/config
const submodulePath = path.dirname(path.dirname(configPath)) let submoduleConfigDir = path.dirname(configPath)
submoduleConfigDir = submoduleConfigDir.replace(/\\/g, '/') // Use forward slashes, even on Windows
// Configure host includeIf // Configure host includeIf
let submoduleGitDir = path.join(submodulePath, '.git')
submoduleGitDir = submoduleGitDir.replace(/\\/g, '/') // Use forward slashes, even on Windows
await this.git.config( await this.git.config(
`includeIf.gitdir:${submoduleGitDir}.path`, `includeIf.gitdir:${submoduleConfigDir}.path`,
credentialsConfigPath, credentialsConfigPath,
false, false,
false, false,
@ -220,15 +219,11 @@ class GitAuthHelper {
) )
// Configure container includeIf // Configure container includeIf
let submoduleRelativePath = path.relative( let relativeSubmoduleConfigDir = path.relative(githubWorkspace, submoduleConfigDir)
workingDirectory, relativeSubmoduleConfigDir = relativeSubmoduleConfigDir.replace(/\\/g, '/') // Use forward slashes, even on Windows
submodulePath
)
submoduleRelativePath = submoduleRelativePath.replace(/\\/g, '/') // Use forward slashes, even on Windows
const containerSubmoduleGitDir = path.posix.join( const containerSubmoduleGitDir = path.posix.join(
containerRepoPath, '/github/workspace',
submoduleRelativePath, relativeSubmoduleConfigDir
'.git'
) )
await this.git.config( await this.git.config(
`includeIf.gitdir:${containerSubmoduleGitDir}.path`, `includeIf.gitdir:${containerSubmoduleGitDir}.path`,