From 7eafe3213f456bb4fcbaeea5562ab60c4ef6cf87 Mon Sep 17 00:00:00 2001
From: Thibault Meyer <0xbaadf00d@users.noreply.github.com>
Date: Fri, 12 Aug 2016 00:34:00 +0200
Subject: [PATCH] Fix #3321: commit tag shortener (#3418)

* Fix #3321: commit tag shortener

* Check short commit

* remove debug

* Edit unit tests

* Show 10-char short SHA
---
 cmd/web.go                   | 6 +++---
 modules/base/tool.go         | 2 +-
 modules/markdown/markdown.go | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/cmd/web.go b/cmd/web.go
index bcb99a0ee..eb364cfec 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -534,12 +534,12 @@ func runWeb(ctx *cli.Context) error {
 			m.Get("/src/*", repo.Home)
 			m.Get("/raw/*", repo.SingleDownload)
 			m.Get("/commits/*", repo.RefCommits)
-			m.Get("/commit/:sha([a-z0-9]{40})$", repo.Diff)
+			m.Get("/commit/:sha([a-z0-9]{7,40})$", repo.Diff)
 			m.Get("/forks", repo.Forks)
 		}, context.RepoRef())
-		m.Get("/commit/:sha([a-z0-9]{40})\\.:ext(patch|diff)", repo.RawDiff)
+		m.Get("/commit/:sha([a-z0-9]{7,40})\\.:ext(patch|diff)", repo.RawDiff)
 
-		m.Get("/compare/:before([a-z0-9]{40})\\.\\.\\.:after([a-z0-9]{40})", repo.CompareDiff)
+		m.Get("/compare/:before([a-z0-9]{7,40})\\.\\.\\.:after([a-z0-9]{7,40})", repo.CompareDiff)
 	}, ignSignIn, context.RepoAssignment(), repo.MustBeNotBare)
 	m.Group("/:username/:reponame", func() {
 		m.Get("/stars", repo.Stars)
diff --git a/modules/base/tool.go b/modules/base/tool.go
index 6088daf03..cf8fece02 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -45,7 +45,7 @@ func EncodeSha1(str string) string {
 }
 
 func ShortSha(sha1 string) string {
-	if len(sha1) == 40 {
+	if len(sha1) > 10 {
 		return sha1[:10]
 	}
 	return sha1
diff --git a/modules/markdown/markdown.go b/modules/markdown/markdown.go
index 92a615499..1da1c5e2e 100644
--- a/modules/markdown/markdown.go
+++ b/modules/markdown/markdown.go
@@ -90,7 +90,7 @@ var (
 	IssueAlphanumericPattern = regexp.MustCompile(`( |^|\()[A-Z]{1,10}-[1-9][0-9]*\b`)
 
 	// Sha1CurrentPattern matches string that represents a commit SHA, e.g. d8a994ef243349f321568f9e36d5c3f444b99cae
-	Sha1CurrentPattern = regexp.MustCompile(`\b[0-9a-f]{40}\b`)
+	Sha1CurrentPattern = regexp.MustCompile(`\b[0-9a-f]{7,40}\b`)
 )
 
 // FindAllMentions matches mention patterns in given content