From 719fedec20010c516584d38516b941bafe1f9f03 Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Tue, 30 May 2023 19:07:40 +0000 Subject: [PATCH] Use rev-list for tags --- dist/index.js | 14 +++++++++++++- src/git-command-manager.ts | 12 ++++++++++++ src/ref-helper.ts | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index e6f5df8..429b1cc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -722,6 +722,18 @@ class GitCommandManager { return output.stdout.trim(); }); } + /** + * Lists SHAs pointed to by a revision. + * @param {string} ref For example: 'refs/heads/main' or '/refs/tags/v1' + * @param {number} numberOfRefs + * @param value + */ + revList(ref, numberOfRefs) { + return __awaiter(this, void 0, void 0, function* () { + const output = yield this.execGit(['rev-list', ref, `-${numberOfRefs}`]); + return output.stdout.trim(); + }); + } setEnvironmentVariable(name, value) { this.gitEnv[name] = value; } @@ -1982,7 +1994,7 @@ function testRef(git, ref, commit) { // refs/tags/ else if (upperRef.startsWith('REFS/TAGS/')) { const tagName = ref.substring('refs/tags/'.length); - return ((yield git.tagExists(tagName)) && commit === (yield git.revParse(ref))); + return ((yield git.tagExists(tagName)) && commit === (yield git.revList(ref, 1))); } // Unexpected else { diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index ab07524..8e6b901 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -35,6 +35,7 @@ export interface IGitCommandManager { log1(format?: string): Promise remoteAdd(remoteName: string, remoteUrl: string): Promise removeEnvironmentVariable(name: string): void + revList(ref: string, numberOfRefs: number): Promise revParse(ref: string): Promise setEnvironmentVariable(name: string, value: string): void shaExists(sha: string): Promise @@ -314,6 +315,17 @@ class GitCommandManager { return output.stdout.trim() } + /** + * Lists SHAs pointed to by a revision. + * @param {string} ref For example: 'refs/heads/main' or '/refs/tags/v1' + * @param {number} numberOfRefs + * @param value + */ + async revList(ref: string, numberOfRefs: number): Promise { + const output = await this.execGit(['rev-list', ref, `-${numberOfRefs}`]) + return output.stdout.trim() + } + setEnvironmentVariable(name: string, value: string): void { this.gitEnv[name] = value } diff --git a/src/ref-helper.ts b/src/ref-helper.ts index 1c25049..149989a 100644 --- a/src/ref-helper.ts +++ b/src/ref-helper.ts @@ -167,7 +167,7 @@ export async function testRef( else if (upperRef.startsWith('REFS/TAGS/')) { const tagName = ref.substring('refs/tags/'.length) return ( - (await git.tagExists(tagName)) && commit === (await git.revParse(ref)) + (await git.tagExists(tagName)) && commit === (await git.revList(ref, 1)) ) } // Unexpected