From b639fa16481cdd32f491a8267fc83a5a472f9093 Mon Sep 17 00:00:00 2001
From: Lauris BH <lauris@nix.lv>
Date: Thu, 13 Jul 2017 06:35:47 +0300
Subject: [PATCH] Ignore invalid issue numbers in commit messages. Fixes  #2022
 (#2150)

---
 models/action.go      | 6 +++---
 models/action_test.go | 2 +-
 models/issue.go       | 3 ++-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/models/action.go b/models/action.go
index 9a12e9229..852bb66d2 100644
--- a/models/action.go
+++ b/models/action.go
@@ -424,7 +424,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 
 			issue, err := GetIssueByRef(ref)
 			if err != nil {
-				if IsErrIssueNotExist(err) || err == errMissingIssueNumber {
+				if IsErrIssueNotExist(err) || err == errMissingIssueNumber || err == errInvalidIssueNumber {
 					continue
 				}
 				return err
@@ -462,7 +462,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 
 			issue, err := GetIssueByRef(ref)
 			if err != nil {
-				if IsErrIssueNotExist(err) || err == errMissingIssueNumber {
+				if IsErrIssueNotExist(err) || err == errMissingIssueNumber || err == errInvalidIssueNumber {
 					continue
 				}
 				return err
@@ -502,7 +502,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
 
 			issue, err := GetIssueByRef(ref)
 			if err != nil {
-				if IsErrIssueNotExist(err) || err == errMissingIssueNumber {
+				if IsErrIssueNotExist(err) || err == errMissingIssueNumber || err == errInvalidIssueNumber {
 					continue
 				}
 				return err
diff --git a/models/action_test.go b/models/action_test.go
index 96ee9a5f7..431469e73 100644
--- a/models/action_test.go
+++ b/models/action_test.go
@@ -161,7 +161,7 @@ func TestUpdateIssuesCommit(t *testing.T) {
 			CommitterName:  "User Two",
 			AuthorEmail:    "user4@example.com",
 			AuthorName:     "User Four",
-			Message:        "start working on #1",
+			Message:        "start working on #FST-1, #1",
 		},
 		{
 			Sha1:           "abcdef2",
diff --git a/models/issue.go b/models/issue.go
index db05a7d45..a8dfb3233 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -24,6 +24,7 @@ import (
 
 var (
 	errMissingIssueNumber = errors.New("No issue number specified")
+	errInvalidIssueNumber = errors.New("Invalid issue number")
 )
 
 // Issue represents an issue or pull request of repository.
@@ -961,7 +962,7 @@ func GetIssueByRef(ref string) (*Issue, error) {
 
 	index, err := com.StrTo(ref[n+1:]).Int64()
 	if err != nil {
-		return nil, err
+		return nil, errInvalidIssueNumber
 	}
 
 	repo, err := GetRepositoryByRef(ref[:n])