diff --git a/src/main/scala/gitbucket/core/view/helpers.scala b/src/main/scala/gitbucket/core/view/helpers.scala index 6464721..0bcb861 100644 --- a/src/main/scala/gitbucket/core/view/helpers.scala +++ b/src/main/scala/gitbucket/core/view/helpers.scala @@ -160,6 +160,12 @@ */ def encodeRefName(value: String): String = StringUtil.urlEncode(value).replace("%2F", "/") + /** + * Url encode except '/' and ':' + */ + def encodeCompareBranch(value: String) = + StringUtil.urlEncode(value).replace("%2F", "/").replace("%3A", ":") + def urlEncode(value: String): String = StringUtil.urlEncode(value) def urlEncode(value: Option[String]): String = value.map(urlEncode).getOrElse("") diff --git a/src/main/twirl/gitbucket/core/repo/branches.scala.html b/src/main/twirl/gitbucket/core/repo/branches.scala.html index a4e7637..e79105f 100644 --- a/src/main/twirl/gitbucket/core/repo/branches.scala.html +++ b/src/main/twirl/gitbucket/core/repo/branches.scala.html @@ -30,9 +30,9 @@ } }.getOrElse{ @if(context.loginAccount.isDefined){ - New Pull Request + New Pull Request }else{ - Compare + Compare } } @if(hasWritePermission){ diff --git a/src/test/scala/gitbucket/core/view/HelpersSpec.scala b/src/test/scala/gitbucket/core/view/HelpersSpec.scala index b20bf0c..b323393 100644 --- a/src/test/scala/gitbucket/core/view/HelpersSpec.scala +++ b/src/test/scala/gitbucket/core/view/HelpersSpec.scala @@ -34,4 +34,18 @@ helpers.repositoryDefaultCompareOrigin(repo) mustEqual "parent-user:some-branch" } } + + "encodeCompareBranch" should { + "not uri encode /" in { + helpers.encodeCompareBranch("foo/bar#baz") mustEqual "foo/bar%23baz" + } + + "not uri encode :" in { + helpers.encodeCompareBranch("foo:bar#baz") mustEqual "foo:bar%23baz" + } + + "uri encode special characters" in { + helpers.encodeCompareBranch("!#$&'()+,;=?@[]") mustEqual "%21%23%24%26%27%28%29%2B%2C%3B%3D%3F%40%5B%5D" + } + } }