Skip to content

Commit

Permalink
Add option to fetch tags even if fetch-depth > 0
Browse files Browse the repository at this point in the history
  • Loading branch information
RobertWieczoreck committed Sep 13, 2022
1 parent 2541b12 commit 655f7fa
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 11 deletions.
4 changes: 4 additions & 0 deletions README.md
Expand Up @@ -80,6 +80,10 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
# Default: 1
fetch-depth: ''

# Whether to fetch tags, even if fetch-depth > 0.
# Default: false
fetch-tags: ''

# Whether to download Git-LFS files
# Default: false
lfs: ''
Expand Down
1 change: 1 addition & 0 deletions __test__/git-auth-helper.test.ts
Expand Up @@ -766,6 +766,7 @@ async function setup(testName: string): Promise<void> {
clean: true,
commit: '',
fetchDepth: 1,
fetchTags: false,
lfs: false,
submodules: false,
nestedSubmodules: false,
Expand Down
1 change: 1 addition & 0 deletions __test__/input-helper.test.ts
Expand Up @@ -80,6 +80,7 @@ describe('input-helper tests', () => {
expect(settings.commit).toBeTruthy()
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
expect(settings.fetchDepth).toBe(1)
expect(settings.fetchTags).toBe(false)
expect(settings.lfs).toBe(false)
expect(settings.ref).toBe('refs/heads/some-ref')
expect(settings.repositoryName).toBe('some-repo')
Expand Down
3 changes: 3 additions & 0 deletions action.yml
Expand Up @@ -56,6 +56,9 @@ inputs:
fetch-depth:
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
default: 1
fetch-tags:
description: 'Whether to fetch tags, even if fetch-depth > 0.'
default: false
lfs:
description: 'Whether to download Git-LFS files'
default: false
Expand Down
14 changes: 9 additions & 5 deletions dist/index.js
Expand Up @@ -6984,10 +6984,10 @@ class GitCommandManager {
return output.exitCode === 0;
});
}
fetch(refSpec, fetchDepth) {
fetch(refSpec, fetchDepth, fetchTags) {
return __awaiter(this, void 0, void 0, function* () {
const args = ['-c', 'protocol.version=2', 'fetch'];
if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {
if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !fetchTags) {
args.push('--no-tags');
}
args.push('--prune', '--progress', '--no-recurse-submodules');
Expand Down Expand Up @@ -7065,8 +7065,8 @@ class GitCommandManager {
}
log1(format) {
return __awaiter(this, void 0, void 0, function* () {
var args = format ? ['log', '-1', format] : ['log', '-1'];
var silent = format ? false : true;
const args = format ? ['log', '-1', format] : ['log', '-1'];
const silent = format ? false : true;
const output = yield this.execGit(args, false, silent);
return output.stdout;
});
Expand Down Expand Up @@ -7438,7 +7438,7 @@ function getSource(settings) {
}
else {
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit);
yield git.fetch(refSpec, settings.fetchDepth);
yield git.fetch(refSpec, settings.fetchDepth, settings.fetchTags);
}
core.endGroup();
// Checkout info
Expand Down Expand Up @@ -17299,6 +17299,10 @@ function getInputs() {
result.fetchDepth = 0;
}
core.debug(`fetch depth = ${result.fetchDepth}`);
// Fetch tags
result.fetchTags =
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE';
core.debug(`fetch tags = ${result.fetchTags}`);
// LFS
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE';
core.debug(`lfs = ${result.lfs}`);
Expand Down
19 changes: 14 additions & 5 deletions src/git-command-manager.ts
Expand Up @@ -25,7 +25,11 @@ export interface IGitCommandManager {
add?: boolean
): Promise<void>
configExists(configKey: string, globalConfig?: boolean): Promise<boolean>
fetch(refSpec: string[], fetchDepth?: number): Promise<void>
fetch(
refSpec: string[],
fetchDepth?: number,
fetchTags?: boolean
): Promise<void>
getDefaultBranch(repositoryUrl: string): Promise<string>
getWorkingDirectory(): string
init(): Promise<void>
Expand Down Expand Up @@ -170,9 +174,14 @@ class GitCommandManager {
return output.exitCode === 0
}

async fetch(refSpec: string[], fetchDepth?: number): Promise<void> {
async fetch(
refSpec: string[],
fetchDepth?: number,
fetchTags?: boolean
): Promise<void> {
const args = ['-c', 'protocol.version=2', 'fetch']
if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {

if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !fetchTags) {
args.push('--no-tags')
}

Expand Down Expand Up @@ -257,8 +266,8 @@ class GitCommandManager {
}

async log1(format?: string): Promise<string> {
var args = format ? ['log', '-1', format] : ['log', '-1']
var silent = format ? false : true
const args = format ? ['log', '-1', format] : ['log', '-1']
const silent = format ? false : true
const output = await this.execGit(args, false, silent)
return output.stdout
}
Expand Down
2 changes: 1 addition & 1 deletion src/git-source-provider.ts
Expand Up @@ -167,7 +167,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
}
} else {
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
await git.fetch(refSpec, settings.fetchDepth)
await git.fetch(refSpec, settings.fetchDepth, settings.fetchTags)
}
core.endGroup()

Expand Down
5 changes: 5 additions & 0 deletions src/git-source-settings.ts
Expand Up @@ -34,6 +34,11 @@ export interface IGitSourceSettings {
*/
fetchDepth: number

/**
* Fetch tags, even if fetchDepth > 0 (default: false)
*/
fetchTags: boolean

/**
* Indicates whether to fetch LFS objects
*/
Expand Down
5 changes: 5 additions & 0 deletions src/input-helper.ts
Expand Up @@ -89,6 +89,11 @@ export async function getInputs(): Promise<IGitSourceSettings> {
}
core.debug(`fetch depth = ${result.fetchDepth}`)

// Fetch tags
result.fetchTags =
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'
core.debug(`fetch tags = ${result.fetchTags}`)

// LFS
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
core.debug(`lfs = ${result.lfs}`)
Expand Down

0 comments on commit 655f7fa

Please sign in to comment.