in tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java [220:287]
public String resolveTicketFromBranch(String srvCode, String ticketFullName,
String branchForTc) throws TicketNotFoundException {
if (!Strings.isNullOrEmpty(ticketFullName))
return ticketFullName; //old code probably not needed now; ticketFullName = ticketFullName.toUpperCase().startsWith(prefix) ? ticketFullName : prefix + ticketFullName;
IJiraServerConfig jiraCfg = cfg.getJiraConfig(srvCode);
IGitHubConfig gitCfg = cfg.getGitConfig(srvCode);
PullRequest pr; // filled only when special PR found
String ticketPrefix;
try {
String branchNumPrefix = jiraCfg.branchNumPrefix();
ticketPrefix = Strings.isNullOrEmpty(branchNumPrefix)
? jiraCfg.projectCodeForVisa() + Ticket.PROJECT_DELIM
: branchNumPrefix;
String prLessTicket = prLessTicket(branchForTc, ticketPrefix, gitCfg);
if (!Strings.isNullOrEmpty(prLessTicket)) {
if (Strings.isNullOrEmpty(branchNumPrefix)) {
//Default, simple case
return prLessTicket; //find out PRless ticket,
}
else {
// PR less ticket only mentioned in real ticket
Ticket ticket = findTicketMentions(srvCode, prLessTicket);
if (ticket != null && !Strings.isNullOrEmpty(ticket.key))
return ticket.key; // found real JIRA ticket for comment
}
}
pr = findPrForBranch(srvCode, branchForTc);
if (pr != null) {
String jiraPrefixInPr = findFixPrefixedNumber(pr.getTitle(), ticketPrefix);
String ticketFromPr;
if (Strings.isNullOrEmpty(branchNumPrefix)) {
//Default, simple case, branch name matching gives us a ticket
ticketFromPr = jiraPrefixInPr;
}
else {
if (Strings.isNullOrEmpty(jiraPrefixInPr))
ticketFromPr = null;
else {
Ticket ticketMentions = findTicketMentions(srvCode, jiraPrefixInPr);
ticketFromPr = ticketMentions == null ? null : ticketMentions.key;
}
}
if (!Strings.isNullOrEmpty(ticketFromPr))
return ticketFromPr; // found real JIRA ticket for comment
}
}
catch (Exception e) {
throw new TicketNotFoundException("Exception happened when server tried to get ticket ID from Pull Request - " + e.getMessage(), e);
}
throw new TicketNotFoundException("JIRA ticket can't be found - " +
"PR title \"" + (pr == null ? "" : pr.getTitle()) + "\" should starts with \"" + ticketPrefix + "NNNNN\"." +
" Please, rename PR according to the" +
" <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
"#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>" +
" or use branch name according ticket name.");
}