mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
Implemented rebase strategy
This commit is contained in:
@@ -261,9 +261,18 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
|
|
||||||
// merge git repository
|
// merge git repository
|
||||||
// TODO Implement merge strategy!
|
// TODO Implement merge strategy!
|
||||||
|
println(form.strategy)
|
||||||
|
form.strategy match {
|
||||||
|
case "merge-commit" =>
|
||||||
|
println("** merge commit **")
|
||||||
mergePullRequest(git, pullreq.branch, issueId,
|
mergePullRequest(git, pullreq.branch, issueId,
|
||||||
s"Merge pull request #${issueId} from ${pullreq.requestUserName}/${pullreq.requestBranch}\n\n" + form.message,
|
s"Merge pull request #${issueId} from ${pullreq.requestUserName}/${pullreq.requestBranch}\n\n" + form.message,
|
||||||
new PersonIdent(loginAccount.fullName, loginAccount.mailAddress))
|
new PersonIdent(loginAccount.fullName, loginAccount.mailAddress))
|
||||||
|
case "rebase" =>
|
||||||
|
println("** rebase **")
|
||||||
|
rebasePullRequest(git, pullreq.branch, issueId,
|
||||||
|
new PersonIdent(loginAccount.fullName, loginAccount.mailAddress))
|
||||||
|
}
|
||||||
|
|
||||||
val (commits, _) = getRequestCompareInfo(owner, name, pullreq.commitIdFrom,
|
val (commits, _) = getRequestCompareInfo(owner, name, pullreq.commitIdFrom,
|
||||||
pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.commitIdTo)
|
pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.commitIdTo)
|
||||||
|
|||||||
@@ -35,11 +35,16 @@ trait MergeService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** merge pull request */
|
/** merge the pull request with a merge commit */
|
||||||
def mergePullRequest(git: Git, branch: String, issueId: Int, message: String, committer: PersonIdent): Unit = {
|
def mergePullRequest(git: Git, branch: String, issueId: Int, message: String, committer: PersonIdent): Unit = {
|
||||||
new MergeCacheInfo(git, branch, issueId).merge(message, committer)
|
new MergeCacheInfo(git, branch, issueId).merge(message, committer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** rebase to the pull request branch */
|
||||||
|
def rebasePullRequest(git: Git, branch: String, issueId: Int, committer: PersonIdent): Unit = {
|
||||||
|
new MergeCacheInfo(git, branch, issueId).rebase(committer)
|
||||||
|
}
|
||||||
|
|
||||||
/** fetch remote branch to my repository refs/pull/{issueId}/head */
|
/** fetch remote branch to my repository refs/pull/{issueId}/head */
|
||||||
def fetchAsPullRequest(userName: String, repositoryName: String, requestUserName: String, requestRepositoryName: String, requestBranch:String, issueId:Int){
|
def fetchAsPullRequest(userName: String, repositoryName: String, requestUserName: String, requestRepositoryName: String, requestBranch:String, issueId:Int){
|
||||||
using(Git.open(getRepositoryDir(userName, repositoryName))){ git =>
|
using(Git.open(getRepositoryDir(userName, repositoryName))){ git =>
|
||||||
@@ -209,6 +214,14 @@ object MergeService{
|
|||||||
Util.updateRefs(repository, s"refs/heads/${branch}", mergeCommitId, false, committer, Some("merged"))
|
Util.updateRefs(repository, s"refs/heads/${branch}", mergeCommitId, false, committer, Some("merged"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def rebase(committer: PersonIdent) = {
|
||||||
|
if(checkConflict()){
|
||||||
|
throw new RuntimeException("This pull request can't merge automatically.")
|
||||||
|
}
|
||||||
|
val mergeTipCommit = using(new RevWalk( repository ))(_.parseCommit( mergeTip ))
|
||||||
|
Util.updateRefs(repository, s"refs/heads/${branch}", mergeTipCommit.getId, false, committer, Some("merged"))
|
||||||
|
}
|
||||||
|
|
||||||
// return treeId
|
// return treeId
|
||||||
private def createMergeCommit(treeId: ObjectId, committer: PersonIdent, message: String) =
|
private def createMergeCommit(treeId: ObjectId, committer: PersonIdent, message: String) =
|
||||||
Util.createMergeCommit(repository, treeId, committer, message, Seq[ObjectId](mergeBaseTip, mergeTip))
|
Util.createMergeCommit(repository, treeId, committer, message, Seq[ObjectId](mergeBaseTip, mergeTip))
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ $(function(){
|
|||||||
|
|
||||||
$('.merge-strategy').click(function(){
|
$('.merge-strategy').click(function(){
|
||||||
$('button#merge-strategy-btn > span.strong').text($(this).find('strong').text());
|
$('button#merge-strategy-btn > span.strong').text($(this).find('strong').text());
|
||||||
$('hidden[name=strategy]').val($(this).data('value'));
|
$('input[name=strategy]').val($(this).data('value'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user