@@ -15,6 +15,7 @@ r22: { | |||
- Ensure the Lucene ticket index is updated on repository deletion. | |||
changes: | |||
- Specify the --dailyLogFile option for the Ubuntu and CentOS service scripts (issue-348) | |||
- The ticket close-on-push commit message regular expression is now configurable by a setting (issue-404) | |||
- Option to allow LDAP users to directly authenticate without performing LDAP searches (pr-162) | |||
- Replace JCommander with args4j to be consistent with other tools (ticket-28) | |||
additions: | |||
@@ -29,6 +30,7 @@ r22: { | |||
- Jeremie Brebec | |||
settings: | |||
- { name: 'realm.ldap.bindpattern', defaultValue: ' ' } | |||
- { name: 'tickets.closeOnPushCommitMessageRegex', defaultValue: '(?:fixes|closes)[\\s-]+#?(\\d+)' } | |||
} | |||
# |
@@ -479,6 +479,13 @@ tickets.acceptNewPatchsets = true | |||
# SINCE 1.4.0 | |||
tickets.requireApproval = false | |||
# The case-insensitive regular expression used to identify and close tickets on | |||
# push to the integration branch for commits that are NOT already referenced as | |||
# a patchset tip. | |||
# | |||
# SINCE 1.5.0 | |||
tickets.closeOnPushCommitMessageRegex = (?:fixes|closes)[\\s-]+#?(\\d+) | |||
# Specify the location of the Lucene Ticket index | |||
# | |||
# SINCE 1.4.0 |
@@ -897,11 +897,20 @@ public class PatchsetReceivePack extends GitblitReceivePack { | |||
if (parseMessage) { | |||
// parse commit message looking for fixes/closes #n | |||
Pattern p = Pattern.compile("(?:fixes|closes)[\\s-]+#?(\\d+)", Pattern.CASE_INSENSITIVE); | |||
Matcher m = p.matcher(commit.getFullMessage()); | |||
while (m.find()) { | |||
String val = m.group(1); | |||
return Long.parseLong(val); | |||
String dx = "(?:fixes|closes)[\\s-]+#?(\\d+)"; | |||
String x = settings.getString(Keys.tickets.closeOnPushCommitMessageRegex, dx); | |||
if (StringUtils.isEmpty(x)) { | |||
x = dx; | |||
} | |||
try { | |||
Pattern p = Pattern.compile(x, Pattern.CASE_INSENSITIVE); | |||
Matcher m = p.matcher(commit.getFullMessage()); | |||
while (m.find()) { | |||
String val = m.group(1); | |||
return Long.parseLong(val); | |||
} | |||
} catch (Exception e) { | |||
LOGGER.error(String.format("Failed to parse \"%s\" in commit %s", x, commit.getName()), e); | |||
} | |||
} | |||
return 0L; |