Update git.ts

This commit is contained in:
James Ives 2022-04-27 07:00:20 -04:00
parent 27811f4b80
commit afcfd7b3a1

View File

@ -21,53 +21,52 @@ export async function init(action: ActionInterface): Promise<void | Error> {
info(`Deploying using ${action.tokenType}… 🔑`) info(`Deploying using ${action.tokenType}… 🔑`)
info('Configuring git…') info('Configuring git…')
// Keep trying to configure Git with various different methods until it works with a maximum of 2 attempts. async function configureGit(throwOnError: boolean) {
const ATTEMPT_LIMIT = 2 try {
let attempt = 0
do {
attempt++
if (attempt > ATTEMPT_LIMIT) {
throw new Error()
}
if (attempt > 1) {
// Handles the 'fatal: not a git directory' error.
await execute(`git init`, action.workspace, action.silent)
await execute( await execute(
`git commit -m "Initial commit" --allow-empty`, `git config --global --add safe.directory "${action.workspace}"`,
action.workspace, action.workspace,
action.silent action.silent
) )
await execute(
`git config user.name "${action.name}"`,
action.workspace,
action.silent
)
await execute(
`git config user.email "${action.email}"`,
action.workspace,
action.silent
)
await execute(
`git config core.ignorecase false`,
action.workspace,
action.silent
)
} catch {
if (throwOnError) {
throw new Error()
}
} }
}
try {
await configureGit(false)
} catch {
// Attempt to re-run if initial configuration failed using git init.
await execute(`git init`, action.workspace, action.silent)
await execute( await execute(
`git config --global --add safe.directory "${action.workspace}"`, `git commit -m "Initial commit" --allow-empty`,
action.workspace, action.workspace,
action.silent action.silent
) )
await execute( await configureGit(true)
`git config user.name "${action.name}"`, }
action.workspace,
action.silent
)
await execute(
`git config user.email "${action.email}"`,
action.workspace,
action.silent
)
await execute(
`git config core.ignorecase false`,
action.workspace,
action.silent
)
} while (attempt < ATTEMPT_LIMIT)
try { try {
if ((process.env.CI && !action.sshKey) || action.isTest) { if ((process.env.CI && !action.sshKey) || action.isTest) {