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
path: root/src
diff options
context:
space:
mode:
authorRobert Wieczoreck <1175008+RobertWieczoreck@users.noreply.github.com>2023-08-16 22:34:54 +0200
committerGitHub <noreply@github.com>2023-08-16 16:34:54 -0400
commit656b4ef8263848a38ec468288a4192bae917f502 (patch)
tree8b7b41f04d13160fd1eab8b6b2c73c6e4247b1bb /src
parentc9ee2550280ba382763bd72bd8065404a3082b18 (diff)
Add option to fetch tags even if fetch-depth > 0 (#579)
* Add option to fetch tags even if fetch-depth > 0 * Add jest tests for fetchDepth and fetchTags options
Diffstat (limited to 'src')
-rw-r--r--src/git-command-manager.ts9
-rw-r--r--src/git-source-provider.ts7
-rw-r--r--src/git-source-settings.ts5
-rw-r--r--src/input-helper.ts5
4 files changed, 21 insertions, 5 deletions
diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts
index e684dba..6ab807b 100644
--- a/src/git-command-manager.ts
+++ b/src/git-command-manager.ts
@@ -33,6 +33,7 @@ export interface IGitCommandManager {
options: {
filter?: string
fetchDepth?: number
+ fetchTags?: boolean
}
): Promise<void>
getDefaultBranch(repositoryUrl: string): Promise<string>
@@ -240,10 +241,10 @@ class GitCommandManager {
async fetch(
refSpec: string[],
- options: {filter?: string; fetchDepth?: number}
+ options: {filter?: 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) && !options.fetchTags) {
args.push('--no-tags')
}
@@ -333,8 +334,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
}
diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts
index 8f9d63f..042563e 100644
--- a/src/git-source-provider.ts
+++ b/src/git-source-provider.ts
@@ -153,7 +153,11 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
// Fetch
core.startGroup('Fetching the repository')
- const fetchOptions: {filter?: string; fetchDepth?: number} = {}
+ const fetchOptions: {
+ filter?: string
+ fetchDepth?: number
+ fetchTags?: boolean
+ } = {}
if (settings.sparseCheckout) fetchOptions.filter = 'blob:none'
if (settings.fetchDepth <= 0) {
// Fetch all branches and tags
@@ -171,6 +175,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
}
} else {
fetchOptions.fetchDepth = settings.fetchDepth
+ fetchOptions.fetchTags = settings.fetchTags
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
await git.fetch(refSpec, fetchOptions)
}
diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts
index 3272e63..9875d8d 100644
--- a/src/git-source-settings.ts
+++ b/src/git-source-settings.ts
@@ -45,6 +45,11 @@ export interface IGitSourceSettings {
fetchDepth: number
/**
+ * Fetch tags, even if fetchDepth > 0 (default: false)
+ */
+ fetchTags: boolean
+
+ /**
* Indicates whether to fetch LFS objects
*/
lfs: boolean
diff --git a/src/input-helper.ts b/src/input-helper.ts
index 410e480..631fbdb 100644
--- a/src/input-helper.ts
+++ b/src/input-helper.ts
@@ -100,6 +100,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}`)