Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
GitLab
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
projects.thm.de
GitLab
Commits
3e259ea8
Commit
3e259ea8
authored
Aug 11, 2015
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Merge branch 'revert-satellites' into 'master'
This reverts commit
5daf44b7
, reversing changes made to
2f706fbd
.
parent
c0bf026e
Changes
99
Hide whitespace changes
Inline
Side-by-side
Showing
99 changed files
with
844 additions
and
1657 deletions
+844
-1657
CHANGELOG
CHANGELOG
+4
-0
Gemfile.lock
Gemfile.lock
+1
-1
app/assets/javascripts/merge_request_widget.js.coffee
app/assets/javascripts/merge_request_widget.js.coffee
+3
-5
app/assets/stylesheets/pages/merge_requests.scss
app/assets/stylesheets/pages/merge_requests.scss
+69
-79
app/controllers/projects/blob_controller.rb
app/controllers/projects/blob_controller.rb
+30
-30
app/controllers/projects/compare_controller.rb
app/controllers/projects/compare_controller.rb
+2
-7
app/controllers/projects/merge_requests_controller.rb
app/controllers/projects/merge_requests_controller.rb
+5
-7
app/helpers/merge_requests_helper.rb
app/helpers/merge_requests_helper.rb
+10
-0
app/models/merge_request.rb
app/models/merge_request.rb
+35
-20
app/models/merge_request_diff.rb
app/models/merge_request_diff.rb
+20
-12
app/models/namespace.rb
app/models/namespace.rb
+2
-3
app/models/project.rb
app/models/project.rb
+1
-13
app/models/project_services/gitlab_ci_service.rb
app/models/project_services/gitlab_ci_service.rb
+4
-0
app/models/repository.rb
app/models/repository.rb
+82
-0
app/services/base_service.rb
app/services/base_service.rb
+4
-0
app/services/compare_service.rb
app/services/compare_service.rb
+21
-20
app/services/files/base_service.rb
app/services/files/base_service.rb
+70
-7
app/services/files/create_service.rb
app/services/files/create_service.rb
+11
-33
app/services/files/delete_service.rb
app/services/files/delete_service.rb
+3
-30
app/services/files/update_service.rb
app/services/files/update_service.rb
+3
-33
app/services/git_push_service.rb
app/services/git_push_service.rb
+6
-7
app/services/merge_requests/auto_merge_service.rb
app/services/merge_requests/auto_merge_service.rb
+0
-30
app/services/merge_requests/base_merge_service.rb
app/services/merge_requests/base_merge_service.rb
+0
-10
app/services/merge_requests/build_service.rb
app/services/merge_requests/build_service.rb
+7
-7
app/services/merge_requests/merge_service.rb
app/services/merge_requests/merge_service.rb
+48
-13
app/services/merge_requests/post_merge_service.rb
app/services/merge_requests/post_merge_service.rb
+22
-0
app/services/merge_requests/refresh_service.rb
app/services/merge_requests/refresh_service.rb
+2
-2
app/services/post_commit_service.rb
app/services/post_commit_service.rb
+71
-0
app/services/projects/destroy_service.rb
app/services/projects/destroy_service.rb
+0
-1
app/services/projects/transfer_service.rb
app/services/projects/transfer_service.rb
+0
-6
app/views/projects/blob/_editor.html.haml
app/views/projects/blob/_editor.html.haml
+2
-2
app/views/projects/blob/new.html.haml
app/views/projects/blob/new.html.haml
+6
-5
app/views/projects/merge_requests/_new_compare.html.haml
app/views/projects/merge_requests/_new_compare.html.haml
+1
-1
app/views/projects/merge_requests/_new_submit.html.haml
app/views/projects/merge_requests/_new_submit.html.haml
+2
-2
app/views/projects/merge_requests/_show.html.haml
app/views/projects/merge_requests/_show.html.haml
+18
-33
app/views/projects/merge_requests/merge.js.haml
app/views/projects/merge_requests/merge.js.haml
+0
-0
app/views/projects/merge_requests/show/_commits.html.haml
app/views/projects/merge_requests/show/_commits.html.haml
+1
-1
app/views/projects/merge_requests/show/_diffs.html.haml
app/views/projects/merge_requests/show/_diffs.html.haml
+1
-1
app/views/projects/merge_requests/show/_how_to_merge.html.haml
...iews/projects/merge_requests/show/_how_to_merge.html.haml
+29
-26
app/views/projects/merge_requests/widget/_closed.html.haml
app/views/projects/merge_requests/widget/_closed.html.haml
+4
-1
app/views/projects/merge_requests/widget/_heading.html.haml
app/views/projects/merge_requests/widget/_heading.html.haml
+13
-34
app/views/projects/merge_requests/widget/_locked.html.haml
app/views/projects/merge_requests/widget/_locked.html.haml
+3
-2
app/views/projects/merge_requests/widget/_merged.html.haml
app/views/projects/merge_requests/widget/_merged.html.haml
+16
-8
app/views/projects/merge_requests/widget/_open.html.haml
app/views/projects/merge_requests/widget/_open.html.haml
+1
-3
app/views/projects/merge_requests/widget/_show.html.haml
app/views/projects/merge_requests/widget/_show.html.haml
+2
-2
app/views/projects/merge_requests/widget/open/_accept.html.haml
...ews/projects/merge_requests/widget/open/_accept.html.haml
+4
-10
app/views/projects/merge_requests/widget/open/_archived.html.haml
...s/projects/merge_requests/widget/open/_archived.html.haml
+3
-1
app/views/projects/merge_requests/widget/open/_check.html.haml
...iews/projects/merge_requests/widget/open/_check.html.haml
+2
-2
app/views/projects/merge_requests/widget/open/_conflicts.html.haml
.../projects/merge_requests/widget/open/_conflicts.html.haml
+10
-10
app/views/projects/merge_requests/widget/open/_missing_branch.html.haml
...ects/merge_requests/widget/open/_missing_branch.html.haml
+16
-16
app/views/projects/merge_requests/widget/open/_no_satellite.html.haml
...ojects/merge_requests/widget/open/_no_satellite.html.haml
+0
-3
app/views/projects/merge_requests/widget/open/_not_allowed.html.haml
...rojects/merge_requests/widget/open/_not_allowed.html.haml
+4
-2
app/views/projects/merge_requests/widget/open/_nothing.html.haml
...ws/projects/merge_requests/widget/open/_nothing.html.haml
+7
-7
app/views/projects/merge_requests/widget/open/_reload.html.haml
...ews/projects/merge_requests/widget/open/_reload.html.haml
+6
-1
app/views/projects/merge_requests/widget/open/_wip.html.haml
app/views/projects/merge_requests/widget/open/_wip.html.haml
+4
-12
app/views/shared/issuable/_form.html.haml
app/views/shared/issuable/_form.html.haml
+2
-2
app/workers/merge_worker.rb
app/workers/merge_worker.rb
+19
-0
app/workers/repository_import_worker.rb
app/workers/repository_import_worker.rb
+0
-1
config/routes.rb
config/routes.rb
+2
-2
doc/development/architecture.md
doc/development/architecture.md
+3
-3
doc/install/installation.md
doc/install/installation.md
+0
-4
doc/install/requirements.md
doc/install/requirements.md
+2
-2
doc/install/structure.md
doc/install/structure.md
+1
-3
doc/logs/logs.md
doc/logs/logs.md
+1
-11
doc/raketasks/maintenance.md
doc/raketasks/maintenance.md
+0
-13
doc/workflow/README.md
doc/workflow/README.md
+1
-0
doc/workflow/merge_requests.md
doc/workflow/merge_requests.md
+40
-0
features/steps/dashboard/help.rb
features/steps/dashboard/help.rb
+1
-1
features/steps/dashboard/merge_requests.rb
features/steps/dashboard/merge_requests.rb
+4
-4
features/steps/project/forked_merge_requests.rb
features/steps/project/forked_merge_requests.rb
+0
-1
features/steps/project/merge_requests.rb
features/steps/project/merge_requests.rb
+0
-5
lib/api/files.rb
lib/api/files.rb
+26
-24
lib/api/merge_requests.rb
lib/api/merge_requests.rb
+5
-1
lib/gitlab.rb
lib/gitlab.rb
+0
-1
lib/gitlab/backend/shell.rb
lib/gitlab/backend/shell.rb
+0
-14
lib/gitlab/satellite/action.rb
lib/gitlab/satellite/action.rb
+0
-58
lib/gitlab/satellite/compare_action.rb
lib/gitlab/satellite/compare_action.rb
+0
-44
lib/gitlab/satellite/files/delete_file_action.rb
lib/gitlab/satellite/files/delete_file_action.rb
+0
-50
lib/gitlab/satellite/files/edit_file_action.rb
lib/gitlab/satellite/files/edit_file_action.rb
+0
-68
lib/gitlab/satellite/files/file_action.rb
lib/gitlab/satellite/files/file_action.rb
+0
-25
lib/gitlab/satellite/files/new_file_action.rb
lib/gitlab/satellite/files/new_file_action.rb
+0
-67
lib/gitlab/satellite/logger.rb
lib/gitlab/satellite/logger.rb
+0
-13
lib/gitlab/satellite/merge_action.rb
lib/gitlab/satellite/merge_action.rb
+0
-146
lib/gitlab/satellite/satellite.rb
lib/gitlab/satellite/satellite.rb
+0
-148
lib/tasks/gitlab/check.rake
lib/tasks/gitlab/check.rake
+0
-56
lib/tasks/gitlab/enable_automerge.rake
lib/tasks/gitlab/enable_automerge.rake
+0
-39
spec/lib/gitlab/reference_extractor_spec.rb
spec/lib/gitlab/reference_extractor_spec.rb
+4
-4
spec/lib/gitlab/satellite/action_spec.rb
spec/lib/gitlab/satellite/action_spec.rb
+0
-116
spec/lib/gitlab/satellite/merge_action_spec.rb
spec/lib/gitlab/satellite/merge_action_spec.rb
+0
-104
spec/models/merge_request_spec.rb
spec/models/merge_request_spec.rb
+1
-1
spec/models/project_services/slack_service_spec.rb
spec/models/project_services/slack_service_spec.rb
+1
-1
spec/models/project_spec.rb
spec/models/project_spec.rb
+0
-1
spec/models/repository_spec.rb
spec/models/repository_spec.rb
+14
-0
spec/requests/api/files_spec.rb
spec/requests/api/files_spec.rb
+5
-35
spec/requests/api/merge_requests_spec.rb
spec/requests/api/merge_requests_spec.rb
+12
-14
spec/routing/project_routing_spec.rb
spec/routing/project_routing_spec.rb
+7
-7
spec/services/merge_requests/create_service_spec.rb
spec/services/merge_requests/create_service_spec.rb
+1
-1
spec/services/merge_requests/merge_service_spec.rb
spec/services/merge_requests/merge_service_spec.rb
+0
-5
spec/support/mentionable_shared_examples.rb
spec/support/mentionable_shared_examples.rb
+1
-1
No files found.
CHANGELOG
View file @
3e259ea8
...
...
@@ -45,7 +45,10 @@ v 7.14.0 (unreleased)
- Remove redis-store TTL monkey patch
- Add support for CI skipped status
- Fetch code from forks to refs/merge-requests/:id/head when merge request created
- Remove satellites
- Remove comments and email addresses when publicly exposing ssh keys (Zeger-Jan van de Weg)
- Improve MR merge widget text and UI consistency.
- Improve text in MR "How To Merge" modal.
- Cache all events
- Order commits by date when comparing branches
- Fix bug causing error when the target branch of a symbolic ref was deleted
...
...
@@ -196,6 +199,7 @@ v 7.12.0
- Add SAML support as an omniauth provider
- Allow to configure a URL to show after sign out
- Add an option to automatically sign-in with an Omniauth provider
- Better performance for web editor (switched from satellites to rugged)
- GitLab CI service sends .gitlab-ci.yml in each push call
- When remove project - move repository and schedule it removal
- Improve group removing logic
...
...
Gemfile.lock
View file @
3e259ea8
...
...
@@ -875,4 +875,4 @@ DEPENDENCIES
wikicloth (= 0.8.1)
BUNDLED WITH
1.10.
5
1.10.
4
app/assets/javascripts/merge_request_widget.js.coffee
View file @
3e259ea8
...
...
@@ -19,7 +19,7 @@ class @MergeRequestWidget
when
'merged'
location
.
reload
()
else
setTimeout
(
merge_request_widget
.
mergeInProgress
,
3
000
)
setTimeout
(
merge_request_widget
.
mergeInProgress
,
2
000
)
dataType
:
'json'
getMergeStatus
:
->
...
...
@@ -49,10 +49,8 @@ class @MergeRequestWidget
@
setMergeButtonClass
(
'btn-danger'
)
showCiCoverage
:
(
coverage
)
->
cov_html
=
$
(
'<span>'
)
cov_html
.
addClass
(
'ci-coverage'
)
cov_html
.
text
(
'Coverage '
+
coverage
+
'%'
)
$
(
'.ci_widget:visible'
).
append
(
cov_html
)
text
=
'Coverage '
+
coverage
+
'%'
$
(
'.ci_widget:visible .ci-coverage'
).
text
(
text
)
setMergeButtonClass
:
(
css_class
)
->
$
(
'.accept_merge_request'
).
removeClass
(
"btn-create"
).
addClass
(
css_class
)
app/assets/stylesheets/pages/merge_requests.scss
View file @
3e259ea8
/**
* MR -> show: Automerge widget
/**
* MR -> show: Automerge widget
*
*/
.mr-state-widget
{
background
:
#FAFAFA
;
margin-bottom
:
20px
;
color
:
#666
;
border
:
1px
solid
#e5e5e5
;
@include
box-shadow
(
0
1px
1px
rgba
(
0
,
0
,
0
,
0
.05
));
@include
border-radius
(
3px
);
form
{
margin-bottom
:
0
;
.clearfix
{
...
...
@@ -20,16 +26,67 @@
display
:
inline-block
;
margin
:
0
;
margin-left
:
20px
;
padding
:
10px
0
;
padding
:
5px
;
line-height
:
20px
;
font-weight
:
bold
;
.remove_source_checkbox
{
margin
:
0
;
font-weight
:
bold
;
}
}
}
.ci_widget
{
border-bottom
:
1px
solid
#EEE
;
i
{
margin-right
:
4px
;
}
&
.ci-success
{
color
:
$gl-success
;
}
&
.ci-skipped
{
background-color
:
#eee
;
color
:
#888
;
}
&
.ci-pending
,
&
.ci-running
{
color
:
$gl-warning
;
}
&
.ci-failed
,
&
.ci-canceled
,
&
.ci-error
{
color
:
$gl-danger
;
}
}
.mr-widget-body
,
.ci_widget
,
.mr-widget-footer
{
padding
:
15px
;
}
.mr-widget-body
{
h4
{
font-weight
:
bold
;
margin
:
5px
0
;
}
p
:last-child
{
margin-bottom
:
0
;
}
}
.mr-widget-footer
{
border-top
:
1px
solid
#EEE
;
}
.ci-coverage
{
float
:
right
;
}
}
@media
(
min-width
:
$screen-sm-max
)
{
...
...
@@ -61,23 +118,10 @@
}
.label-branch
{
@include
border-radius
(
4px
);
padding
:
3px
4px
;
border
:
none
;
background
:
$hover
;
color
:
#333
;
color
:
#222
;
font-family
:
$monospace_font
;
font-weight
:
normal
;
font-weight
:
bold
;
overflow
:
hidden
;
.label-project
{
@include
border-radius-left
(
4px
);
padding
:
3px
4px
;
background
:
#279
;
position
:
relative
;
left
:
-4px
;
letter-spacing
:
-1px
;
}
}
.mr-list
{
...
...
@@ -124,64 +168,6 @@
display
:
none
;
}
.mr-state-widget
{
font-size
:
13px
;
background
:
#FAFAFA
;
margin-bottom
:
20px
;
color
:
#666
;
border
:
1px
solid
#e5e5e5
;
@include
box-shadow
(
0
1px
1px
rgba
(
0
,
0
,
0
,
0
.05
));
@include
border-radius
(
3px
);
.ci_widget
{
padding
:
10px
15px
;
font-size
:
15px
;
border-bottom
:
1px
solid
#EEE
;
&
.ci-success
{
color
:
$gl-success
;
}
&
.ci-skipped
{
background-color
:
#eee
;
color
:
#888
;
}
&
.ci-pending
,
&
.ci-running
{
color
:
$gl-warning
;
}
&
.ci-failed
,
&
.ci-canceled
,
&
.ci-error
{
color
:
$gl-danger
;
}
}
.mr-widget-body
{
padding
:
10px
15px
;
h4
{
font-weight
:
bold
;
margin
:
5px
0
;
}
p
:last-child
{
margin-bottom
:
0
;
}
}
.mr-widget-footer
{
padding
:
10px
15px
;
border-top
:
1px
solid
#EEE
;
}
.ci-coverage
{
float
:
right
;
}
}
.merge-request-show-labels
{
a
{
margin-right
:
5px
;
...
...
@@ -196,3 +182,7 @@
.merge-request-form
.select2-container
{
width
:
250px
!
important
;
}
#modal_merge_info
.modal-dialog
{
width
:
600px
;
}
app/controllers/projects/blob_controller.rb
View file @
3e259ea8
...
...
@@ -13,27 +13,20 @@ class InvalidPathError < StandardError; end
before_action
:commit
,
except:
[
:new
,
:create
]
before_action
:blob
,
except:
[
:new
,
:create
]
before_action
:from_merge_request
,
only:
[
:edit
,
:update
]
before_action
:after_edit_path
,
only:
[
:edit
,
:update
]
before_action
:require_branch_head
,
only:
[
:edit
,
:update
]
before_action
:editor_variables
,
except:
[
:show
,
:preview
,
:diff
]
before_action
:after_edit_path
,
only:
[
:edit
,
:update
]
def
new
commit
unless
@repository
.
empty?
end
def
create
file_path
=
File
.
join
(
@path
,
File
.
basename
(
params
[
:file_name
]))
result
=
Files
::
CreateService
.
new
(
@project
,
current_user
,
params
.
merge
(
new_branch:
sanitized_new_branch_name
),
@ref
,
file_path
).
execute
result
=
Files
::
CreateService
.
new
(
@project
,
current_user
,
@commit_params
).
execute
if
result
[
:status
]
==
:success
flash
[
:notice
]
=
"Your changes have been successfully committed"
ref
=
sanitized_new_branch_name
.
presence
||
@ref
redirect_to
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
File
.
join
(
ref
,
file_path
))
redirect_to
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
File
.
join
(
@target_branch
,
@file_path
))
else
flash
[
:alert
]
=
result
[
:message
]
render
:new
...
...
@@ -48,22 +41,10 @@ def edit
end
def
update
result
=
Files
::
UpdateService
.
new
(
@project
,
current_user
,
params
.
merge
(
new_branch:
sanitized_new_branch_name
),
@ref
,
@path
).
execute
result
=
Files
::
UpdateService
.
new
(
@project
,
current_user
,
@commit_params
).
execute
if
result
[
:status
]
==
:success
flash
[
:notice
]
=
"Your changes have been successfully committed"
if
from_merge_request
from_merge_request
.
reload_code
end
redirect_to
after_edit_path
else
flash
[
:alert
]
=
result
[
:message
]
...
...
@@ -80,12 +61,11 @@ def preview
end
def
destroy
result
=
Files
::
DeleteService
.
new
(
@project
,
current_user
,
params
,
@ref
,
@path
).
execute
result
=
Files
::
DeleteService
.
new
(
@project
,
current_user
,
@commit_params
).
execute
if
result
[
:status
]
==
:success
flash
[
:notice
]
=
"Your changes have been successfully committed"
redirect_to
namespace_project_tree_path
(
@project
.
namespace
,
@project
,
@ref
)
redirect_to
namespace_project_tree_path
(
@project
.
namespace
,
@project
,
@target_branch
)
else
flash
[
:alert
]
=
result
[
:message
]
render
:show
...
...
@@ -135,7 +115,6 @@ def assign_blob_vars
@id
=
params
[
:id
]
@ref
,
@path
=
extract_ref
(
@id
)
rescue
InvalidPathError
not_found!
end
...
...
@@ -145,8 +124,8 @@ def after_edit_path
if
from_merge_request
diffs_namespace_project_merge_request_path
(
from_merge_request
.
target_project
.
namespace
,
from_merge_request
.
target_project
,
from_merge_request
)
+
"#file-path-
#{
hexdigest
(
@path
)
}
"
elsif
sanitized_new_branch_name
.
present?
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
File
.
join
(
sanitized_new_branch_name
,
@path
))
elsif
@target_branch
.
present?
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
File
.
join
(
@target_branch
,
@path
))
else
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
@id
)
end
...
...
@@ -160,4 +139,25 @@ def from_merge_request
def
sanitized_new_branch_name
@new_branch
||=
sanitize
(
strip_tags
(
params
[
:new_branch
]))
end
def
editor_variables
@current_branch
=
@ref
@target_branch
=
(
sanitized_new_branch_name
||
@ref
)
@file_path
=
if
action_name
.
to_s
==
'create'
File
.
join
(
@path
,
File
.
basename
(
params
[
:file_name
]))
else
@path
end
@commit_params
=
{
file_path:
@file_path
,
current_branch:
@current_branch
,
target_branch:
@target_branch
,
commit_message:
params
[
:commit_message
],
file_content:
params
[
:content
],
file_content_encoding:
params
[
:encoding
]
}
end
end
app/controllers/projects/compare_controller.rb
View file @
3e259ea8
...
...
@@ -13,13 +13,8 @@ def show
base_ref
=
Addressable
::
URI
.
unescape
(
params
[
:from
])
@ref
=
head_ref
=
Addressable
::
URI
.
unescape
(
params
[
:to
])
compare_result
=
CompareService
.
new
.
execute
(
current_user
,
@project
,
head_ref
,
@project
,
base_ref
)
compare_result
=
CompareService
.
new
.
execute
(
@project
,
head_ref
,
@project
,
base_ref
)
@commits
=
compare_result
.
commits
@diffs
=
compare_result
.
diffs
...
...
app/controllers/projects/merge_requests_controller.rb
View file @
3e259ea8
require
'gitlab/satellite/satellite'
class
Projects::MergeRequestsController
<
Projects
::
ApplicationController
before_action
:module_enabled
before_action
:merge_request
,
only:
[
:edit
,
:update
,
:show
,
:diffs
,
:commits
,
:
automerge
,
:auto
merge_check
,
:edit
,
:update
,
:show
,
:diffs
,
:commits
,
:
merge
,
:
merge_check
,
:ci_status
,
:toggle_subscription
]
before_action
:closes_issues
,
only:
[
:edit
,
:update
,
:show
,
:diffs
,
:commits
]
...
...
@@ -137,7 +135,7 @@ def update
end
end
def
auto
merge_check
def
merge_check
if
@merge_request
.
unchecked?
@merge_request
.
check_if_can_be_merged
end
...
...
@@ -147,11 +145,11 @@ def automerge_check
render
partial:
"projects/merge_requests/widget/show.html.haml"
,
layout:
false
end
def
auto
merge
def
merge
return
access_denied!
unless
@merge_request
.
can_be_merged_by?
(
current_user
)
if
@merge_request
.
auto
mergeable?
Auto
MergeWorker
.
perform_async
(
@merge_request
.
id
,
current_user
.
id
,
params
)
if
@merge_request
.
mergeable?
MergeWorker
.
perform_async
(
@merge_request
.
id
,
current_user
.
id
,
params
)
@status
=
true
else
@status
=
false
...
...
app/helpers/merge_requests_helper.rb
View file @
3e259ea8
...
...
@@ -61,4 +61,14 @@ def mr_change_branches_path(merge_request)
}
)
end
def
source_branch_with_namespace
(
merge_request
)
if
merge_request
.
for_fork?
namespace
=
link_to
(
merge_request
.
source_project_namespace
,
project_path
(
merge_request
.
source_project
))
namespace
+
":
#{
merge_request
.
source_branch
}
"
else
merge_request
.
source_branch
end
end
end
app/models/merge_request.rb
View file @
3e259ea8
...
...
@@ -41,8 +41,6 @@ class MergeRequest < ActiveRecord::Base
delegate
:commits
,
:diffs
,
:last_commit
,
:last_commit_short_sha
,
to: :merge_request_diff
,
prefix:
nil
attr_accessor
:should_remove_source_branch
# When this attribute is true some MR validation is ignored
# It allows us to close or modify broken merge requests
attr_accessor
:allow_broken
...
...
@@ -57,7 +55,7 @@ class MergeRequest < ActiveRecord::Base
transition
[
:reopened
,
:opened
]
=>
:closed
end
event
:m
erge
do
event
:m
ark_as_merged
do
transition
[
:reopened
,
:opened
,
:locked
]
=>
:merged
end
...
...
@@ -205,7 +203,10 @@ def reload_code
end
def
check_if_can_be_merged
if
Gitlab
::
Satellite
::
MergeAction
.
new
(
self
.
author
,
self
).
can_be_merged?
can_be_merged
=
project
.
repository
.
can_be_merged?
(
source_sha
,
target_branch
)
if
can_be_merged
mark_as_mergeable
else
mark_as_unmergeable
...
...
@@ -220,18 +221,6 @@ def closed_event
self
.
target_project
.
events
.
where
(
target_id:
self
.
id
,
target_type:
"MergeRequest"
,
action:
Event
::
CLOSED
).
last
end
def
automerge!
(
current_user
,
commit_message
=
nil
)
return
unless
automergeable?
MergeRequests
::
AutoMergeService
.
new
(
target_project
,
current_user
).
execute
(
self
,
commit_message
)
end
def
remove_source_branch?
self
.
should_remove_source_branch
&&
!
self
.
source_project
.
root_ref?
(
self
.
source_branch
)
&&
!
self
.
for_fork?
end
def
open?
opened?
||
reopened?
end
...
...
@@ -240,11 +229,11 @@ def work_in_progress?
title
=~
/\A\[?WIP\]?:? /i
end
def
auto
mergeable?
def
mergeable?
open
?
&&
!
work_in_progress?
&&
can_be_merged?
end
def
auto
merge_status
def
gitlab_
merge_status
if
work_in_progress?
"work_in_progress"
else
...
...
@@ -271,14 +260,14 @@ def mr_and_commit_notes
#
# see "git diff"
def
to_diff
(
current_user
)
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
self
).
diff_in_satellite
target_project
.
repository
.
diff_text
(
target_branch
,
source_sha
)
end
# Returns the commit as a series of email patches.
#
# see "git format-patch"
def
to_patch
(
current_user
)
Gitlab
::
Satellite
::
MergeAction
.
new
(
current_user
,
self
).
format_patch
target_project
.
repository
.
format_patch
(
target_branch
,
source_sha
)
end
def
hook_attrs
...
...
@@ -429,4 +418,30 @@ def state_human_name
"Open"
end
end
def
target_sha
@target_sha
||=
target_project
.
repository
.
commit
(
target_branch
).
sha
end
def
source_sha
commits
.
first
.
sha
end
def
fetch_ref
target_project
.
repository
.
fetch_ref
(
source_project
.
repository
.
path_to_repo
,
"refs/heads/
#{
source_branch
}
"
,
"refs/merge-requests/
#{
iid
}
/head"
)
end
def
in_locked_state
begin
lock_mr
yield
ensure
unlock_mr
if
locked?
end
end
end
app/models/merge_request_diff.rb
View file @
3e259ea8
...
...
@@ -16,9 +16,8 @@
class
MergeRequestDiff
<
ActiveRecord
::
Base
include
Sortable
# Prevent store of diff
# if commits amount more then 200
COMMITS_SAFE_SIZE
=
200
# Prevent store of diff if commits amount more then 500
COMMITS_SAFE_SIZE
=
500
attr_reader
:commits
,
:diffs
...
...
@@ -124,12 +123,12 @@ def reload_diffs
if
new_diffs
.
any?
if
new_diffs
.
size
>
Commit
::
DIFF_HARD_LIMIT_FILES
self
.
state
=
:overflow_diff_files_limit
new_diffs
=
[
]
new_diffs
=
new_diffs
.
first
[
Commit
::
DIFF_HARD_LIMIT_LINES
]
end
if
new_diffs
.
sum
{
|
diff
|
diff
.
diff
.
lines
.
count
}
>
Commit
::
DIFF_HARD_LIMIT_LINES
self
.
state
=
:overflow_diff_lines_limit
new_diffs
=
[
]
new_diffs
=
new_diffs
.
first
[
Commit
::
DIFF_HARD_LIMIT_LINES
]
end
end
...
...
@@ -160,12 +159,21 @@ def repository
private
def
compare_result
@compare_result
||=
CompareService
.
new
.
execute
(
merge_request
.
author
,
merge_request
.
source_project
,
merge_request
.
source_branch
,
merge_request
.
target_project
,
merge_request
.
target_branch
,
)
@compare_result
||=
begin
# Update ref for merge request
merge_request
.
fetch_ref
# Get latest sha of branch from source project
source_sha
=
merge_request
.
source_project
.
commit
(
source_branch
).
sha
Gitlab
::
CompareResult
.
new
(
Gitlab
::
Git
::
Compare
.
new
(
merge_request
.
target_project
.
repository
.
raw_repository
,
merge_request
.
target_branch
,
source_sha
,
)
)
end
end
end
app/models/namespace.rb
View file @
3e259ea8
...
...
@@ -118,12 +118,11 @@ def move_dir
gitlab_shell
.
add_namespace
(
path_was
)
if
gitlab_shell
.
mv_namespace
(
path_was
,
path
)
# If repositories moved successfully we need to
remove old satellites
#
and
send update instructions to users.
# If repositories moved successfully we need to
# send update instructions to users.
# However we cannot allow rollback since we moved namespace dir
# So we basically we mute exceptions in next actions
begin
gitlab_shell
.
rm_satellites
(
path_was
)
send_update_instructions
rescue
# Returning false does not rollback after_* transaction but gives
...
...
app/models/project.rb
View file @
3e259ea8
...
...
@@ -520,14 +520,6 @@ def empty_repo?
!
repository
.
exists?
||
repository
.
empty?
end
def
ensure_satellite_exists
self
.
satellite
.
create
unless
self
.
satellite
.
exists?
end
def
satellite