Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
317f9539
Commit
317f9539
authored
Aug 15, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
0c86354b
1a20be86
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
4 additions
and
53 deletions
+4
-53
app/models/merge_request.rb
app/models/merge_request.rb
+1
-12
app/services/merge_requests/rebase_service.rb
app/services/merge_requests/rebase_service.rb
+2
-1
spec/models/merge_request_spec.rb
spec/models/merge_request_spec.rb
+0
-39
spec/services/merge_requests/rebase_service_spec.rb
spec/services/merge_requests/rebase_service_spec.rb
+1
-1
No files found.
app/models/merge_request.rb
View file @
317f9539
...
@@ -222,18 +222,7 @@ class MergeRequest < ApplicationRecord
...
@@ -222,18 +222,7 @@ class MergeRequest < ApplicationRecord
end
end
def
rebase_in_progress?
def
rebase_in_progress?
(
rebase_jid
.
present?
&&
Gitlab
::
SidekiqStatus
.
running?
(
rebase_jid
))
||
rebase_jid
.
present?
&&
Gitlab
::
SidekiqStatus
.
running?
(
rebase_jid
)
gitaly_rebase_in_progress?
end
# TODO: remove the Gitaly lookup after v12.1, when rebase_jid will be reliable
def
gitaly_rebase_in_progress?
strong_memoize
(
:gitaly_rebase_in_progress
)
do
# The source project can be deleted
next
false
unless
source_project
source_project
.
repository
.
rebase_in_progress?
(
id
)
end
end
end
# Use this method whenever you need to make sure the head_pipeline is synced with the
# Use this method whenever you need to make sure the head_pipeline is synced with the
...
...
app/services/merge_requests/rebase_service.rb
View file @
317f9539
...
@@ -15,7 +15,8 @@ module MergeRequests
...
@@ -15,7 +15,8 @@ module MergeRequests
end
end
def
rebase
def
rebase
if
merge_request
.
gitaly_rebase_in_progress?
# Ensure Gitaly isn't already running a rebase
if
source_project
.
repository
.
rebase_in_progress?
(
merge_request
.
id
)
log_error
(
'Rebase task canceled: Another rebase is already in progress'
,
save_message_on_model:
true
)
log_error
(
'Rebase task canceled: Another rebase is already in progress'
,
save_message_on_model:
true
)
return
false
return
false
end
end
...
...
spec/models/merge_request_spec.rb
View file @
317f9539
...
@@ -3013,9 +3013,6 @@ describe MergeRequest do
...
@@ -3013,9 +3013,6 @@ describe MergeRequest do
subject
{
merge_request
.
rebase_in_progress?
}
subject
{
merge_request
.
rebase_in_progress?
}
it
do
it
do
# Stub out the legacy gitaly implementation
allow
(
merge_request
).
to
receive
(
:gitaly_rebase_in_progress?
)
{
false
}
allow
(
Gitlab
::
SidekiqStatus
).
to
receive
(
:running?
).
with
(
rebase_jid
)
{
jid_valid
}
allow
(
Gitlab
::
SidekiqStatus
).
to
receive
(
:running?
).
with
(
rebase_jid
)
{
jid_valid
}
merge_request
.
rebase_jid
=
rebase_jid
merge_request
.
rebase_jid
=
rebase_jid
...
@@ -3025,42 +3022,6 @@ describe MergeRequest do
...
@@ -3025,42 +3022,6 @@ describe MergeRequest do
end
end
end
end
describe
'#gitaly_rebase_in_progress?'
do
let
(
:repo_path
)
do
Gitlab
::
GitalyClient
::
StorageSettings
.
allow_disk_access
do
subject
.
source_project
.
repository
.
path
end
end
let
(
:rebase_path
)
{
File
.
join
(
repo_path
,
"gitlab-worktree"
,
"rebase-
#{
subject
.
id
}
"
)
}
before
do
system
(
*
%W(
#{
Gitlab
.
config
.
git
.
bin_path
}
-C
#{
repo_path
}
worktree add --detach
#{
rebase_path
}
master)
)
end
it
'returns true when there is a current rebase directory'
do
expect
(
subject
.
rebase_in_progress?
).
to
be_truthy
end
it
'returns false when there is no rebase directory'
do
FileUtils
.
rm_rf
(
rebase_path
)
expect
(
subject
.
rebase_in_progress?
).
to
be_falsey
end
it
'returns false when the rebase directory has expired'
do
time
=
20
.
minutes
.
ago
.
to_time
File
.
utime
(
time
,
time
,
rebase_path
)
expect
(
subject
.
rebase_in_progress?
).
to
be_falsey
end
it
'returns false when the source project has been removed'
do
allow
(
subject
).
to
receive
(
:source_project
).
and_return
(
nil
)
expect
(
subject
.
rebase_in_progress?
).
to
be_falsey
end
end
describe
'#allow_collaboration'
do
describe
'#allow_collaboration'
do
let
(
:merge_request
)
do
let
(
:merge_request
)
do
build
(
:merge_request
,
source_branch:
'fixes'
,
allow_collaboration:
true
)
build
(
:merge_request
,
source_branch:
'fixes'
,
allow_collaboration:
true
)
...
...
spec/services/merge_requests/rebase_service_spec.rb
View file @
317f9539
...
@@ -25,7 +25,7 @@ describe MergeRequests::RebaseService do
...
@@ -25,7 +25,7 @@ describe MergeRequests::RebaseService do
describe
'#execute'
do
describe
'#execute'
do
context
'when another rebase is already in progress'
do
context
'when another rebase is already in progress'
do
before
do
before
do
allow
(
merge_request
).
to
receive
(
:gitaly_rebase_in_progress?
).
and_return
(
true
)
allow
(
repository
).
to
receive
(
:rebase_in_progress?
).
with
(
merge_request
.
id
).
and_return
(
true
)
end
end
it
'saves the error message'
do
it
'saves the error message'
do
...
...
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