feat: restore working base branch and uncommitted changes

This commit is contained in:
Peter Evans 2022-11-29 15:56:08 +09:00
parent 1847e5d1d6
commit 27a3a9910c
5 changed files with 216 additions and 15 deletions

View file

@ -106,6 +106,13 @@ function splitLines(multilineString: string): string[] {
.filter(x => x !== '')
}
interface CreateOrUpdateBranchResult {
action: string
base: string
hasDiffWithBase: boolean
headSha: string
}
export async function createOrUpdateBranch(
git: GitCommandManager,
commitMessage: string,
@ -163,9 +170,8 @@ export async function createOrUpdateBranch(
}
}
// Remove uncommitted tracked and untracked changes
await git.exec(['reset', '--hard'])
await git.exec(['clean', '-f', '-d'])
// Stash any uncommitted tracked and untracked changes
const stashed = await git.stashPush(['--include-untracked'])
// Perform fetch and reset the working base
// Commits made during the workflow will be removed
@ -283,12 +289,13 @@ export async function createOrUpdateBranch(
// Delete the temporary branch
await git.exec(['branch', '--delete', '--force', tempBranch])
// Checkout the working base to leave the local repository as it was found
await git.checkout(workingBase)
// Restore any stashed changes
if (stashed) {
await git.stashPop()
}
return result
}
interface CreateOrUpdateBranchResult {
action: string
base: string
hasDiffWithBase: boolean
headSha: string
}