diff options
| author | eric sciple <ericsciple@users.noreply.github.com> | 2020-05-27 09:54:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-27 09:54:28 -0400 |
| commit | 1af3b46e902378dcbdf104a32ddae1644c64c366 (patch) | |
| tree | eb40b22d94abbd6860bb2ec1eac5b1ca62ea542a /src/git-source-provider.ts | |
| parent | 31d9f35c90667154e76ccca096898caab3e5bba7 (diff) | |
Fetch all history for all tags and branches when fetch-depth=0 (#258)
Diffstat (limited to 'src/git-source-provider.ts')
| -rw-r--r-- | src/git-source-provider.ts | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index bde53bb..89c16b5 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -42,7 +42,8 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { git, settings.repositoryPath, repositoryUrl, - settings.clean + settings.clean, + settings.ref ) } @@ -109,8 +110,24 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { // Fetch core.startGroup('Fetching the repository') - const refSpec = refHelper.getRefSpec(settings.ref, settings.commit) - await git.fetch(settings.fetchDepth, refSpec) + if (settings.fetchDepth <= 0) { + // Fetch all branches and tags + let refSpec = refHelper.getRefSpecForAllHistory( + settings.ref, + settings.commit + ) + await git.fetch(refSpec) + + // When all history is fetched, the ref we're interested in may have moved to a different + // commit (push or force push). If so, fetch again with a targeted refspec. + if (!(await refHelper.testRef(git, settings.ref, settings.commit))) { + refSpec = refHelper.getRefSpec(settings.ref, settings.commit) + await git.fetch(refSpec) + } + } else { + const refSpec = refHelper.getRefSpec(settings.ref, settings.commit) + await git.fetch(refSpec, settings.fetchDepth) + } core.endGroup() // Checkout info |
