From 89ec91619ad7e10196cc651e7f6b74817f7a5665 Mon Sep 17 00:00:00 2001 From: Cameron Corley Date: Tue, 20 Aug 2024 11:26:36 -0400 Subject: [PATCH 1/3] support regex patterns for tagFilter --- .../gitparameter/GitParameterDefinition.java | 21 +++++++++++++++++-- .../help-tagFilter.html | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition.java b/src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition.java index 7318db96..600069db 100644 --- a/src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition.java +++ b/src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition.java @@ -382,9 +382,26 @@ private boolean notMatchUseRepository(String gitUrl) { private Set getTag(GitClient gitClient, String gitUrl) throws InterruptedException { Set tagSet = new HashSet<>(); try { - Map tags = gitClient.getRemoteReferences(gitUrl, tagFilter, false, true); + + Map tags = null; + + boolean isRegex = tagFilter != null && tagFilter.startsWith("/"); + tags = gitClient.getRemoteReferences(gitUrl, isRegex ? "*" : tagFilter, false, true); + + Pattern pattern = null; + if (isRegex) { + pattern = Pattern.compile(tagFilter.substring(1)); + } + for (String tagName : tags.keySet()) { - tagSet.add(tagName.replaceFirst(REFS_TAGS_PATTERN, "")); + tagName = tagName.replaceFirst(REFS_TAGS_PATTERN, ""); + if (isRegex) { + if (pattern.matcher(tagName).matches()) { + tagSet.add(tagName); + } + } else { + tagSet.add(tagName); + } } } catch (GitException e) { LOGGER.log(Level.WARNING, getCustomJobName() + " " + Messages.GitParameterDefinition_getTag(), e); diff --git a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html index 448868b8..2a3f2bc6 100644 --- a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html +++ b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html @@ -1,6 +1,7 @@
This parameter is used to get tag from git.
If is blank, parameter is set to "*".
+ Regex patterns must be prefixed with with a forward slash (ie /.*). Properly is executed command: git ls-remote -t <repository> "*" or git ls-remote -t <repository> "$tagFilter".
git-ls-remote documentation.
\ No newline at end of file From 982e90fe2f440fe631f81a654b1371f591470f63 Mon Sep 17 00:00:00 2001 From: Cameron Corley Date: Tue, 20 Aug 2024 12:32:04 -0400 Subject: [PATCH 2/3] formatting --- .../gitparameter/GitParameterDefinition/help-tagFilter.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html index 2a3f2bc6..b3ed6cbc 100644 --- a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html +++ b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html @@ -1,7 +1,7 @@
This parameter is used to get tag from git.
If is blank, parameter is set to "*".
- Regex patterns must be prefixed with with a forward slash (ie /.*). + Regex patterns must be prefixed with with a forward slash (ie /.*).
Properly is executed command: git ls-remote -t <repository> "*" or git ls-remote -t <repository> "$tagFilter".
git-ls-remote documentation.
\ No newline at end of file From 0084852e60bb804153446135b751665f764fddad Mon Sep 17 00:00:00 2001 From: Mark Waite Date: Thu, 1 May 2025 15:27:34 -0600 Subject: [PATCH 3/3] Remove duplicated word --- .../gitparameter/GitParameterDefinition/help-tagFilter.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html index b3ed6cbc..d032dbda 100644 --- a/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html +++ b/src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/GitParameterDefinition/help-tagFilter.html @@ -1,7 +1,7 @@
This parameter is used to get tag from git.
If is blank, parameter is set to "*".
- Regex patterns must be prefixed with with a forward slash (ie /.*).
+ Regex patterns must be prefixed with a forward slash (ie /.*).
Properly is executed command: git ls-remote -t <repository> "*" or git ls-remote -t <repository> "$tagFilter".
git-ls-remote documentation.
\ No newline at end of file