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"
+ }
+ }
}