diff --git a/core/src/main/java/hudson/scm/SubversionTagAction.java b/core/src/main/java/hudson/scm/SubversionTagAction.java index 74a315bb973ec2d82981515cc360083edf25ea5b..284e6958114ad5aa4c8156d02cb771f5815ca554 100644 --- a/core/src/main/java/hudson/scm/SubversionTagAction.java +++ b/core/src/main/java/hudson/scm/SubversionTagAction.java @@ -21,6 +21,8 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.regex.Pattern; +import java.util.regex.Matcher; import java.util.Map.Entry; /** @@ -75,6 +77,23 @@ public class SubversionTagAction extends AbstractScmTagAction { return Collections.unmodifiableMap(tags); } + private static final Pattern TRUNK_BRANCH_MARKER = Pattern.compile("/(trunk|branches)(/|$)"); + + /** + * Creates a URL, to be used as the default value of the module tag URL. + * + * @return + * null if failed to guess. + */ + public String makeTagURL(SvnInfo si) { + // assume the standard trunk/branches/tags repository layout + Matcher m = TRUNK_BRANCH_MARKER.matcher(si.url); + if(!m.find()) + return null; // doesn't have 'trunk' nor 'branches' + + return si.url.substring(0,m.start())+"/tags/"+build.getProject().getName()+"-"+build.getNumber(); + } + /** * Invoked to actually tag the workspace. */ diff --git a/core/src/main/resources/hudson/scm/SubversionTagAction/tagForm.jelly b/core/src/main/resources/hudson/scm/SubversionTagAction/tagForm.jelly index 8a96ca9a3f446287f94b5b4dc130616651746776..9a0c54c9c1ab192089763885d473ec79c963d05f 100644 --- a/core/src/main/resources/hudson/scm/SubversionTagAction/tagForm.jelly +++ b/core/src/main/resources/hudson/scm/SubversionTagAction/tagForm.jelly @@ -22,7 +22,10 @@ - + + +