From 9e7181f04ac8e162cb17ec779d7c80b999c0e673 Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Tue, 30 May 2023 19:07:40 +0000 Subject: Use rev-list for tags --- src/git-command-manager.ts | 12 ++++++++++++ src/ref-helper.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') 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 -- cgit v1.2.3