stable

Clone or download

Read-only

Pull request merges take advantage of the local references

Each pull request now have a reference in the destination repository so most of the operations related to merges can be done in memory to avoid clone operations that can be very costful in term of IO usage. Unfortunately, Tuleap on the Git CLI to do Git operations so we do not have access to all low-level operations. To do an actual merge we still need to work in a temporary zone before pushing back the result of the merge in the destination repository (we would need access to git_merge_commits [0] to avoid that). However to optimize that a bit, we now rely on Git alternates [1] to not copy the whole object store. This way, merging a PR in a large repo is faster. This is part of story #11477: have a dedicated references for pullrequests We can also close request #10136: Improve mergeability detection status performance [0] https://libgit2.github.com/libgit2/#HEAD/group/merge/git_merge_commits [1] https://git-scm.com/docs/gitrepository-layout Change-Id: I50150268a4069708d176c84249921afbfe0d8139

Modified Files

Name
M plugins/pullrequest/include/PullRequest/GitExec.php +35 −61 Go to diff View file
M plugins/pullrequest/include/PullRequest/PullRequestCreator.php +22 −31 Go to diff View file
M plugins/pullrequest/include/PullRequest/PullRequestMerger.php +32 −61 Go to diff View file
M plugins/pullrequest/include/PullRequest/PullRequestUpdater.php +18 −19 Go to diff View file
M plugins/pullrequest/include/PullRequest/REST/v1/PullRequestsResource.php +1 −1 Go to diff View file
M plugins/pullrequest/include/pullrequestPlugin.class.php +3 −5 Go to diff View file
M plugins/pullrequest/tests/GitExecTest.php +0 −36 Go to diff View file