Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
48f741ee
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
48f741ee
编写于
1月 24, 2014
作者:
D
Dmitriy Zaporozhets
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MergeRequests services
Signed-off-by:
N
Dmitriy Zaporozhets
<
dmitriy.zaporozhets@gmail.com
>
上级
d1d13856
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
90 addition
and
31 deletion
+90
-31
app/models/merge_request.rb
app/models/merge_request.rb
+11
-13
app/models/project.rb
app/models/project.rb
+1
-1
app/observers/merge_request_observer.rb
app/observers/merge_request_observer.rb
+0
-17
app/services/merge_requests/auto_merge_service.rb
app/services/merge_requests/auto_merge_service.rb
+30
-0
app/services/merge_requests/base_merge_service.rb
app/services/merge_requests/base_merge_service.rb
+26
-0
app/services/merge_requests/merge_service.rb
app/services/merge_requests/merge_service.rb
+22
-0
未找到文件。
app/models/merge_request.rb
浏览文件 @
48f741ee
...
...
@@ -50,17 +50,26 @@ class MergeRequest < ActiveRecord::Base
end
event
:merge
do
transition
[
:reopened
,
:opened
]
=>
:merged
transition
[
:reopened
,
:opened
,
:locked
]
=>
:merged
end
event
:reopen
do
transition
closed: :reopened
end
event
:lock
do
transition
[
:reopened
,
:opened
]
=>
:locked
end
event
:unlock
do
transition
locked: :reopened
end
state
:opened
state
:reopened
state
:closed
state
:merged
state
:locked
end
state_machine
:merge_status
,
initial: :unchecked
do
...
...
@@ -136,19 +145,8 @@ class MergeRequest < ActiveRecord::Base
self
.
target_project
.
events
.
where
(
target_id:
self
.
id
,
target_type:
"MergeRequest"
,
action:
Event
::
CLOSED
).
last
end
def
merge!
(
user_id
)
self
.
author_id_of_changes
=
user_id
self
.
merge
end
def
automerge!
(
current_user
,
commit_message
=
nil
)
if
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
self
).
merge!
(
commit_message
)
self
.
merge!
(
current_user
.
id
)
true
end
rescue
mark_as_unmergeable
false
MergeRequests
::
AutoMergeService
.
new
.
execute
(
self
,
current_user
,
commit_message
)
end
def
mr_and_commit_notes
...
...
app/models/project.rb
浏览文件 @
48f741ee
...
...
@@ -350,7 +350,7 @@ class Project < ActiveRecord::Base
# Close merge requests
mrs
=
self
.
merge_requests
.
opened
.
where
(
target_branch:
branch_name
).
to_a
mrs
=
mrs
.
select
(
&
:last_commit
).
select
{
|
mr
|
c_ids
.
include?
(
mr
.
last_commit
.
id
)
}
mrs
.
each
{
|
merge_request
|
merge_request
.
merge!
(
user
.
id
)
}
mrs
.
each
{
|
merge_request
|
MergeRequests
::
MergeService
.
new
.
execute
(
merge_request
,
user
,
nil
)
}
true
end
...
...
app/observers/merge_request_observer.rb
浏览文件 @
48f741ee
...
...
@@ -18,23 +18,6 @@ class MergeRequestObserver < ActivityObserver
execute_hooks
(
merge_request
)
end
def
after_merge
(
merge_request
,
transition
)
notification
.
merge_mr
(
merge_request
)
# Since MR can be merged via sidekiq
# to prevent event duplication do this check
return
true
if
merge_request
.
merge_event
Event
.
create
(
project:
merge_request
.
target_project
,
target_id:
merge_request
.
id
,
target_type:
merge_request
.
class
.
name
,
action:
Event
::
MERGED
,
author_id:
merge_request
.
author_id_of_changes
)
execute_hooks
(
merge_request
)
end
def
after_reopen
(
merge_request
,
transition
)
create_event
(
merge_request
,
Event
::
REOPENED
)
create_note
(
merge_request
)
...
...
app/services/merge_requests/auto_merge_service.rb
0 → 100644
浏览文件 @
48f741ee
module
MergeRequests
# AutoMergeService class
#
# Do git merge in satellite and in case of success
# mark merge request as merged and execute all hooks and notifications
# Called when you do merge via GitLab UI
class
AutoMergeService
<
BaseMergeService
def
execute
(
merge_request
,
current_user
,
commit_message
)
merge_request
.
lock
if
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
merge_request
).
merge!
(
commit_message
)
merge_request
.
author_id_of_changes
=
current_user
.
id
merge_request
.
merge
notification
.
merge_mr
(
merge_request
)
create_merge_event
(
merge_request
)
execute_project_hooks
(
merge_request
)
true
else
merge_request
.
unlock
false
end
rescue
merge_request
.
unlock
if
merge_request
.
locked?
merge_request
.
mark_as_unmergeable
false
end
end
end
app/services/merge_requests/base_merge_service.rb
0 → 100644
浏览文件 @
48f741ee
module
MergeRequests
class
BaseMergeService
private
def
notification
NotificationService
.
new
end
def
create_merge_event
(
merge_request
)
Event
.
create
(
project:
merge_request
.
target_project
,
target_id:
merge_request
.
id
,
target_type:
merge_request
.
class
.
name
,
action:
Event
::
MERGED
,
author_id:
merge_request
.
author_id_of_changes
)
end
def
execute_project_hooks
(
merge_request
)
if
merge_request
.
project
merge_request
.
project
.
execute_hooks
(
merge_request
.
to_hook_data
,
:merge_request_hooks
)
end
end
end
end
app/services/merge_requests/merge_service.rb
0 → 100644
浏览文件 @
48f741ee
module
MergeRequests
# MergeService class
#
# Mark existing merge request as merged
# and execute all hooks and notifications
# Called when you do merge via command line and push code
# to target branch
class
MergeService
<
BaseMergeService
def
execute
(
merge_request
,
current_user
,
commit_message
)
merge_request
.
author_id_of_changes
=
current_user
.
id
merge_request
.
merge
notification
.
merge_mr
(
merge_request
)
create_merge_event
(
merge_request
)
execute_project_hooks
(
merge_request
)
true
rescue
false
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录