mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 06:25:51 +01:00
Pullreqs in forks now use upstream master as origin
This implements #668.
This commit is contained in:
@@ -4,7 +4,7 @@ import java.text.SimpleDateFormat
|
||||
import java.util.{Date, Locale, TimeZone}
|
||||
|
||||
import gitbucket.core.controller.Context
|
||||
import gitbucket.core.model.CommitState
|
||||
import gitbucket.core.model.{CommitState, Repository}
|
||||
import gitbucket.core.plugin.{RenderRequest, PluginRegistry, Renderer}
|
||||
import gitbucket.core.service.{RepositoryService, RequestCache}
|
||||
import gitbucket.core.util.{FileUtil, JGitUtil, StringUtil}
|
||||
@@ -164,6 +164,18 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
|
||||
|
||||
def urlEncode(value: Option[String]): String = value.map(urlEncode).getOrElse("")
|
||||
|
||||
/**
|
||||
* The default origin (branch or remote:branch pair) branches are compared to.
|
||||
*
|
||||
* There are two cases: when the repo is a fork and when the repo is not a
|
||||
* fork.
|
||||
*
|
||||
* For a fork, the default ref is parentUserName:defaultBranch.
|
||||
* For a non fork, the default ref is defaultBranch.
|
||||
*/
|
||||
def repositoryDefaultCompareOrigin(repo: Repository): String =
|
||||
repo.parentUserName.map(n => s"$n:${repo.defaultBranch}").getOrElse(repo.defaultBranch)
|
||||
|
||||
/**
|
||||
* Generates the url to the repository.
|
||||
*/
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
}
|
||||
}.getOrElse{
|
||||
@if(context.loginAccount.isDefined){
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repository.repository.defaultBranch)}...@{encodeRefName(branch.name)}?expand=1" class="btn btn-small">New Pull Request</a>
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repositoryDefaultCompareOrigin(repository.repository))}...@{encodeRefName(branch.name)}?expand=1" class="btn btn-small">New Pull Request</a>
|
||||
}else{
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repository.repository.defaultBranch)}...@{encodeRefName(branch.name)}" class="btn btn-small">Compare</a>
|
||||
<a href="@url(repository)/compare/@{encodeRefName(repositoryDefaultCompareOrigin(repository.repository))}...@{encodeRefName(branch.name)}" class="btn btn-small">Compare</a>
|
||||
}
|
||||
}
|
||||
@if(hasWritePermission){
|
||||
|
||||
37
src/test/scala/gitbucket/core/view/HelpersSpec.scala
Normal file
37
src/test/scala/gitbucket/core/view/HelpersSpec.scala
Normal file
@@ -0,0 +1,37 @@
|
||||
package gitbucket.core.view
|
||||
|
||||
import org.specs2.mutable._
|
||||
import gitbucket.core.model.Repository
|
||||
import java.util.Date
|
||||
|
||||
class HelpersSpec extends Specification {
|
||||
def repository(defaultBranch: String, parentUserName: Option[String]) =
|
||||
Repository(
|
||||
userName = "some-user",
|
||||
repositoryName = "some-repo",
|
||||
isPrivate = false,
|
||||
description = None,
|
||||
defaultBranch = defaultBranch,
|
||||
parentUserName = parentUserName,
|
||||
parentRepositoryName = Some("some-repo"),
|
||||
registeredDate = new Date(),
|
||||
updatedDate = new Date(),
|
||||
lastActivityDate = new Date(),
|
||||
originUserName = Some("some-other-user"),
|
||||
originRepositoryName = Some("some-repo")
|
||||
)
|
||||
|
||||
"repositoryDefaultCompareOrigin" should {
|
||||
"return default branch when not fork" in {
|
||||
val repo = repository("master", None)
|
||||
|
||||
helpers.repositoryDefaultCompareOrigin(repo) mustEqual "master"
|
||||
}
|
||||
|
||||
"return [upstream]:[branch] when a fork" in {
|
||||
val repo = repository("some-branch", Some("parent-user"))
|
||||
|
||||
helpers.repositoryDefaultCompareOrigin(repo) mustEqual "parent-user:some-branch"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user