diff --git a/.gopmfile b/.gopmfile
index d4cd97017..28bc79e69 100644
--- a/.gopmfile
+++ b/.gopmfile
@@ -24,7 +24,9 @@ github.com/macaron-contrib/oauth2 = commit:8f394c3629
 github.com/macaron-contrib/session = commit:e48134e803
 github.com/macaron-contrib/toolbox = commit:acbfe36e16
 github.com/mattn/go-sqlite3 = commit:e28cd440fa
+github.com/mcuadros/go-version
 github.com/microcosm-cc/bluemonday = commit:2b7763a06c
+github.com/mssola/user_agent = commit:f659b98638
 github.com/msteinert/pam = commit:9a42d39dbf
 github.com/nfnt/resize = commit:dc93e1b98c
 github.com/russross/blackfriday = commit:8cec3a854e
@@ -33,8 +35,6 @@ golang.org/x/net = commit:937a34c9de13
 golang.org/x/text = commit:5b2527008a4c
 gopkg.in/ini.v1 = commit:caf3f03ad9
 gopkg.in/redis.v2 = commit:e617904962
-github.com/hashicorp/go-version = commit:999359b6b7
-github.com/mssola/user_agent = commit:f659b98638
 
 [res]
 include = etc|public|scripts|templates
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index e8a362bd4..0aaecec84 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -10,20 +10,19 @@ import (
 	"strings"
 
 	"github.com/Unknwon/macaron"
+	"github.com/mcuadros/go-version"
+	"github.com/mssola/user_agent"
 
 	"github.com/gogits/gogs/models"
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/git"
 	"github.com/gogits/gogs/modules/log"
 	"github.com/gogits/gogs/modules/setting"
-
-	"github.com/hashicorp/go-version"
-	"github.com/mssola/user_agent"
 )
 
 const (
 	FIREFOX_COPY_SUPPORT = "41.0"
-	CHROME_COPY_SUPPORT = "43.0.2356"
+	CHROME_COPY_SUPPORT  = "43.0.2356"
 )
 
 func ApiRepoAssignment() macaron.Handler {
@@ -355,22 +354,11 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler {
 		ctx.Data["CommitId"] = ctx.Repo.CommitId
 
 		userAgent := ctx.Req.Header.Get("User-Agent")
-		ua := user_agent.New(userAgent);
+		ua := user_agent.New(userAgent)
 		browserName, browserVer := ua.Browser()
 
-		sliceVer := strings.Split(browserVer, ".")
-		var max int
-		if max = len(sliceVer); 3 < max {
-			max = 3
-		}
-		browserVer = strings.Join(sliceVer[:max], ".")
-
-		browserVersion, err := version.NewVersion(browserVer)
-		chromeConstraint, err := version.NewConstraint(">= " + CHROME_COPY_SUPPORT)
-		firefoxConstraint, err := version.NewConstraint(">= " + FIREFOX_COPY_SUPPORT)
-
-		ctx.Data["BrowserSupportsCopy"] = (browserName == "Chrome" && chromeConstraint.Check(browserVersion)) || (browserName == "Firefox" && firefoxConstraint.Check(browserVersion))
-
+		ctx.Data["BrowserSupportsCopy"] = (browserName == "Chrome" && version.Compare(browserVer, CHROME_COPY_SUPPORT, ">=")) ||
+			(browserName == "Firefox" && version.Compare(browserVer, FIREFOX_COPY_SUPPORT, ">="))
 	}
 }