Skip to content

Commit

Permalink
Use rev-list for tags
Browse files Browse the repository at this point in the history
  • Loading branch information
luketomlinson committed May 30, 2023
1 parent f095bcc commit 719fede
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
14 changes: 13 additions & 1 deletion dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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 {
Expand Down
12 changes: 12 additions & 0 deletions src/git-command-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export interface IGitCommandManager {
log1(format?: string): Promise<string>
remoteAdd(remoteName: string, remoteUrl: string): Promise<void>
removeEnvironmentVariable(name: string): void
revList(ref: string, numberOfRefs: number): Promise<string>
revParse(ref: string): Promise<string>
setEnvironmentVariable(name: string, value: string): void
shaExists(sha: string): Promise<boolean>
Expand Down Expand Up @@ -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<string> {
const output = await this.execGit(['rev-list', ref, `-${numberOfRefs}`])
return output.stdout.trim()
}

setEnvironmentVariable(name: string, value: string): void {
this.gitEnv[name] = value
}
Expand Down
2 changes: 1 addition & 1 deletion src/ref-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 719fede

Please sign in to comment.