BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
d24c40ec
Unverified
Commit
d24c40ec
authored
Jul 01, 2015
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge branches inside one repository using rugged instead of satellites
Signed-off-by:
Dmitriy Zaporozhets
<
dmitriy.zaporozhets@gmail.com
>
parent
f31d2aa4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
6 deletions
+56
-6
merge_request.rb
app/models/merge_request.rb
+14
-1
repository.rb
app/models/repository.rb
+2
-2
auto_merge_service.rb
app/services/merge_requests/auto_merge_service.rb
+40
-3
No files found.
app/models/merge_request.rb
View file @
d24c40ec
...
...
@@ -205,7 +205,20 @@ class MergeRequest < ActiveRecord::Base
end
def
check_if_can_be_merged
if
Gitlab
::
Satellite
::
MergeAction
.
new
(
self
.
author
,
self
).
can_be_merged?
can_be_merged
=
if
for_fork?
Gitlab
::
Satellite
::
MergeAction
.
new
(
self
.
author
,
self
).
can_be_merged?
else
rugged
=
project
.
repository
.
rugged
our_commit
=
rugged
.
branches
[
target_branch
].
target
their_commit
=
rugged
.
branches
[
source_branch
].
target
if
our_commit
&&
their_commit
!
rugged
.
merge_commits
(
our_commit
,
their_commit
).
conflicts?
end
end
if
can_be_merged
mark_as_mergeable
else
mark_as_unmergeable
...
...
app/models/repository.rb
View file @
d24c40ec
...
...
@@ -414,8 +414,6 @@ class Repository
Gitlab
::
Git
::
Blob
.
remove
(
raw_repository
,
options
)
end
private
def
user_to_comitter
(
user
)
{
email:
user
.
email
,
...
...
@@ -424,6 +422,8 @@ class Repository
}
end
private
def
cache
@cache
||=
RepositoryCache
.
new
(
path_with_namespace
)
end
...
...
app/services/merge_requests/auto_merge_service.rb
View file @
d24c40ec
...
...
@@ -5,17 +5,20 @@ module MergeRequests
# mark merge request as merged and execute all hooks and notifications
# Called when you do merge via GitLab UI
class
AutoMergeService
<
BaseMergeService
attr_reader
:merge_request
,
:commit_message
def
execute
(
merge_request
,
commit_message
)
@commit_message
=
commit_message
@merge_request
=
merge_request
merge_request
.
lock_mr
if
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
merge_request
).
merge!
(
commit_message
)
if
merge!
merge_request
.
merge
create_merge_event
(
merge_request
,
current_user
)
create_note
(
merge_request
)
notification_service
.
merge_mr
(
merge_request
,
current_user
)
execute_hooks
(
merge_request
,
'merge'
)
true
else
merge_request
.
unlock_mr
...
...
@@ -26,5 +29,39 @@ module MergeRequests
merge_request
.
mark_as_unmergeable
false
end
def
merge!
if
merge_request
.
for_fork?
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
merge_request
).
merge!
(
commit_message
)
else
# Merge local branches using rugged instead of satellites
if
sha
=
commit
after_commit
(
sha
,
merge_request
.
target_branch
)
end
end
end
def
commit
committer
=
repository
.
user_to_comitter
(
current_user
)
options
=
{
message:
commit_message
,
author:
committer
,
committer:
committer
}
repository
.
merge
(
merge_request
.
source_branch
,
merge_request
.
target_branch
,
options
)
end
def
after_commit
(
sha
,
branch
)
commit
=
repository
.
commit
(
sha
)
full_ref
=
'refs/heads/'
+
branch
old_sha
=
commit
.
parent_id
||
Gitlab
::
Git
::
BLANK_SHA
GitPushService
.
new
.
execute
(
project
,
current_user
,
old_sha
,
sha
,
full_ref
)
end
def
repository
project
.
repository
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment