Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/index.js14
-rw-r--r--src/git-command-manager.ts12
-rw-r--r--src/ref-helper.ts2
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<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>
@@ -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
}
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