You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/08/16 16:07:44 UTC

[ignite-teamcity-bot] branch master updated: Branch name from PR is also used for ticket resolution in PRs list

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
     new de4a475  Branch name from PR is also used for ticket resolution in PRs list
de4a475 is described below

commit de4a475fcb38dac714af7beb4d7b96af037ed202
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Fri Aug 16 19:07:17 2019 +0300

    Branch name from PR is also used for ticket resolution in PRs list
---
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 10 ++++++++--
 .../tcbot/engine/pr/BranchTicketMatcher.java       | 22 ++++++++++------------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index f51185e..4b77551 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -430,12 +430,18 @@ public class TcBotTriggerAndSignOffService {
                 if (user != null) {
                     c.prAuthor = user.login();
                     c.prAuthorAvatarUrl = user.avatarUrl();
-                } else {
+                }
+                else {
                     c.prAuthor = "";
                     c.prAuthorAvatarUrl = "";
                 }
 
-                Ticket ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
+                Ticket ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, jiraCfg, pr.getTitle());
+
+                if (ticket == null || ticket.id == 0) {
+                    if (pr.head() != null && pr.head().ref() != null)
+                        ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, jiraCfg, pr.head().ref());
+                }
 
                 c.jiraIssueId = ticket == null ? null : ticket.key;
                 c.jiraStatusName = ticket == null ? null : ticket.status();
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java
index 3a69f0e..adfad4e 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java
@@ -86,27 +86,25 @@ public class BranchTicketMatcher {
 
     /**
      * @param tickets Tickets.
-     * @param pr Pr.
      * @param jiraCfg Jira config.
+     * @param prTitle
      */
-    @Nullable public Ticket resolveTicketIdForPrBasedContrib(Collection<Ticket> tickets, PullRequest pr,
-                                                             IJiraServerConfig jiraCfg) {
+    @Nullable public Ticket resolveTicketIdForPrBasedContrib(Collection<Ticket> tickets,
+        IJiraServerConfig jiraCfg, String prTitle) {
         String branchNumPrefix = jiraCfg.branchNumPrefix();
 
         if (Strings.isNullOrEmpty(branchNumPrefix)) {
             //an easy way, no special branch and ticket mappings specified, use project code.
             String jiraPrefix = jiraCfg.projectCodeForVisa() + Ticket.PROJECT_DELIM;
 
-            final String ticketKey = findFixPrefixedNumber(pr.getTitle(), jiraPrefix);
+            final String ticketKey = findFixPrefixedNumber(prTitle, jiraPrefix);
 
             return tickets.stream()
-                    .filter(t -> Objects.equals(t.key, ticketKey))
-                    .findFirst()
-                    .orElseGet(()->new Ticket(ticketKey));
+                .filter(t -> Objects.equals(t.key, ticketKey))
+                .findFirst()
+                .orElseGet(() -> new Ticket(ticketKey));
         }
 
-        String prTitle = pr.getTitle();
-
         String branchNum = findFixPrefixedNumber(prTitle, branchNumPrefix);
 
         if (branchNum == null) // PR does not mention
@@ -200,7 +198,7 @@ public class BranchTicketMatcher {
         while (endIdx < val.length() && Character.isDigit(val.charAt(endIdx)))
             endIdx++;
 
-        if (endIdx == beginIdx)
+        if (endIdx == beginIdx || endIdx - beginIdx <= 1) // protection from one digit resolution to IGNITE-2
             return null;
 
         return prefix + val.substring(beginIdx, endIdx);
@@ -263,9 +261,9 @@ public class BranchTicketMatcher {
                     ticketFromPr = jiraPrefixInPr;
                 }
                 else {
-                    if (Strings.isNullOrEmpty(jiraPrefixInPr)) {
+                    if (Strings.isNullOrEmpty(jiraPrefixInPr))
                         ticketFromPr = null;
-                    } else {
+                    else {
                         Ticket ticketMentions = findTicketMentions(srvCode, jiraPrefixInPr);
 
                         ticketFromPr = ticketMentions == null ? null : ticketMentions.key;