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 859a8c2..e6132b8 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 @@ -381,9 +381,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 448868b..d032dbd 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 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