mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-01 11:06:06 +01:00
(refs #2)Compare to its own branch if repository is not specified.
This commit is contained in:
@@ -138,6 +138,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
|
|
||||||
private def checkConflict(userName: String, repositoryName: String, branch: String,
|
private def checkConflict(userName: String, repositoryName: String, branch: String,
|
||||||
requestUserName: String, requestRepositoryName: String, requestBranch: String): Boolean = {
|
requestUserName: String, requestRepositoryName: String, requestBranch: String): Boolean = {
|
||||||
|
// TODO Are there more quick way?
|
||||||
// LockUtil.lock(s"${userName}/${repositoryName}/merge-check"){
|
// LockUtil.lock(s"${userName}/${repositoryName}/merge-check"){
|
||||||
// val remote = getRepositoryDir(userName, repositoryName)
|
// val remote = getRepositoryDir(userName, repositoryName)
|
||||||
// val tmpdir = new java.io.File(getTemporaryDir(userName, repositoryName), "merge-check")
|
// val tmpdir = new java.io.File(getTemporaryDir(userName, repositoryName), "merge-check")
|
||||||
@@ -167,22 +168,27 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
get("/:owner/:repository/pulls/compare")(collaboratorsOnly { newRepo =>
|
get("/:owner/:repository/pulls/compare")(collaboratorsOnly { forkedRepository =>
|
||||||
(newRepo.repository.originUserName, newRepo.repository.originRepositoryName) match {
|
(forkedRepository.repository.originUserName, forkedRepository.repository.originRepositoryName) match {
|
||||||
case (None,_)|(_, None) => NotFound // TODO Compare to self branch?
|
|
||||||
case (Some(originUserName), Some(originRepositoryName)) => {
|
case (Some(originUserName), Some(originRepositoryName)) => {
|
||||||
getRepository(originUserName, originRepositoryName, baseUrl).map { oldRepo =>
|
getRepository(originUserName, originRepositoryName, baseUrl).map { originRepository =>
|
||||||
withGit(
|
withGit(
|
||||||
getRepositoryDir(originUserName, originRepositoryName),
|
getRepositoryDir(originUserName, originRepositoryName),
|
||||||
getRepositoryDir(params("owner"), params("repository"))
|
getRepositoryDir(forkedRepository.owner, forkedRepository.name)
|
||||||
){ (oldGit, newGit) =>
|
){ (oldGit, newGit) =>
|
||||||
val oldBranch = JGitUtil.getDefaultBranch(oldGit, oldRepo).get._2
|
val oldBranch = JGitUtil.getDefaultBranch(oldGit, originRepository).get._2
|
||||||
val newBranch = JGitUtil.getDefaultBranch(newGit, newRepo).get._2
|
val newBranch = JGitUtil.getDefaultBranch(newGit, forkedRepository).get._2
|
||||||
|
|
||||||
redirect(s"${context.path}/${newRepo.owner}/${newRepo.name}/pulls/compare/${originUserName}:${oldBranch}...${newBranch}")
|
redirect(s"${context.path}/${forkedRepository.owner}/${forkedRepository.name}/pulls/compare/${originUserName}:${oldBranch}...${newBranch}")
|
||||||
}
|
}
|
||||||
} getOrElse NotFound
|
} getOrElse NotFound
|
||||||
}
|
}
|
||||||
|
case _ => {
|
||||||
|
JGitUtil.withGit(getRepositoryDir(forkedRepository.owner, forkedRepository.name)){ git =>
|
||||||
|
val defaultBranch = JGitUtil.getDefaultBranch(git, forkedRepository).get._2
|
||||||
|
redirect(s"${context.path}/${forkedRepository.owner}/${forkedRepository.name}/pulls/compare/${defaultBranch}...${defaultBranch}")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -21,9 +21,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="compare-edit" style="display: none;">
|
<div id="compare-edit" style="display: none;">
|
||||||
<a href="#" id="cancel-condition-editing" class="pull-right"><i class="icon-remove-circle"></i></a>
|
<a href="#" id="cancel-condition-editing" class="pull-right"><i class="icon-remove-circle"></i></a>
|
||||||
@helper.html.dropdown(originRepository.owner + "/" + repository.name, "base fork") {
|
@if(members.nonEmpty){
|
||||||
@members.map { member =>
|
@helper.html.dropdown(originRepository.owner + "/" + repository.name, "base fork") {
|
||||||
<li><a href="#" class="origin-owner" data-name="@member">@helper.html.checkicon(member == originRepository.owner) @member/@repository.name</a></li>
|
@members.map { member =>
|
||||||
|
<li><a href="#" class="origin-owner" data-name="@member">@helper.html.checkicon(member == originRepository.owner) @member/@repository.name</a></li>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@helper.html.dropdown(originId, "base") {
|
@helper.html.dropdown(originId, "base") {
|
||||||
@@ -32,9 +34,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
...
|
...
|
||||||
@helper.html.dropdown(forkedRepository.owner + "/" + repository.name, "head fork") {
|
@if(members.nonEmpty){
|
||||||
@members.map { member =>
|
@helper.html.dropdown(forkedRepository.owner + "/" + repository.name, "head fork") {
|
||||||
<li><a href="#" class="forked-owner" data-name="@member">@helper.html.checkicon(member == forkedRepository.owner) @member/@repository.name</a></li>
|
@members.map { member =>
|
||||||
|
<li><a href="#" class="forked-owner" data-name="@member">@helper.html.checkicon(member == forkedRepository.owner) @member/@repository.name</a></li>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@helper.html.dropdown(forkedId, "compare") {
|
@helper.html.dropdown(forkedId, "compare") {
|
||||||
@@ -153,11 +157,17 @@ $(function(){
|
|||||||
e.find('i').attr('class', 'icon-ok');
|
e.find('i').attr('class', 'icon-ok');
|
||||||
e.parents('div.btn-group').find('button strong').text(e.text());
|
e.parents('div.btn-group').find('button strong').text(e.text());
|
||||||
|
|
||||||
location.href = '@url(repository)/pulls/compare/' +
|
@if(members.isEmpty){
|
||||||
$.trim($('i.icon-ok').parents('a.origin-owner' ).data('name')) + ':' +
|
location.href = '@url(repository)/pulls/compare/' +
|
||||||
$.trim($('i.icon-ok').parents('a.origin-branch').data('name')) + '...' +
|
$.trim($('i.icon-ok').parents('a.origin-branch').data('name')) + '...' +
|
||||||
$.trim($('i.icon-ok').parents('a.forked-owner' ).data('name')) + ':' +
|
$.trim($('i.icon-ok').parents('a.forked-branch').data('name'));
|
||||||
$.trim($('i.icon-ok').parents('a.forked-branch').data('name'));
|
} else {
|
||||||
|
location.href = '@url(repository)/pulls/compare/' +
|
||||||
|
$.trim($('i.icon-ok').parents('a.origin-owner' ).data('name')) + ':' +
|
||||||
|
$.trim($('i.icon-ok').parents('a.origin-branch').data('name')) + '...' +
|
||||||
|
$.trim($('i.icon-ok').parents('a.forked-owner' ).data('name')) + ':' +
|
||||||
|
$.trim($('i.icon-ok').parents('a.forked-branch').data('name'));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#show-form').click(function(){
|
$('#show-form').click(function(){
|
||||||
|
|||||||
Reference in New Issue
Block a user