Browse Source

Configure Tickets close-on-push commit message regex (issue-404)

tags/v1.5.0
James Moger 10 years ago
parent
commit
beb021472d

+ 2
- 0
releases.moxie View File

@@ -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+)' }
}

#

+ 7
- 0
src/main/distrib/data/gitblit.properties View File

@@ -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

+ 14
- 5
src/main/java/com/gitblit/git/PatchsetReceivePack.java View File

@@ -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;

Loading…
Cancel
Save