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
101e7e04
Commit
101e7e04
authored
Feb 01, 2022
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab master
parents
e3b2cac1
2bd808a1
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
36 deletions
+34
-36
app/services/projects/destroy_service.rb
app/services/projects/destroy_service.rb
+1
-4
config/feature_flags/development/extract_mr_diff_commit_deletions.yml
...re_flags/development/extract_mr_diff_commit_deletions.yml
+0
-8
doc/subscriptions/gitlab_com/index.md
doc/subscriptions/gitlab_com/index.md
+7
-3
lib/gitlab/popen.rb
lib/gitlab/popen.rb
+10
-1
spec/lib/gitlab/popen_spec.rb
spec/lib/gitlab/popen_spec.rb
+11
-0
spec/services/projects/destroy_service_spec.rb
spec/services/projects/destroy_service_spec.rb
+5
-20
No files found.
app/services/projects/destroy_service.rb
View file @
101e7e04
...
...
@@ -139,10 +139,7 @@ module Projects
destroy_web_hooks!
destroy_project_bots!
destroy_ci_records!
if
::
Feature
.
enabled?
(
:extract_mr_diff_commit_deletions
,
default_enabled: :yaml
)
destroy_mr_diff_commits!
end
# Rails attempts to load all related records into memory before
# destroying: https://github.com/rails/rails/issues/22510
...
...
config/feature_flags/development/extract_mr_diff_commit_deletions.yml
deleted
100644 → 0
View file @
e3b2cac1
---
name
:
extract_mr_diff_commit_deletions
introduced_by_url
:
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/75963
rollout_issue_url
:
https://gitlab.com/gitlab-org/gitlab/-/issues/347073
milestone
:
'
14.6'
type
:
development
group
:
group::code review
default_enabled
:
false
doc/subscriptions/gitlab_com/index.md
View file @
101e7e04
...
...
@@ -256,7 +256,7 @@ expiration date without a gap in available service. An invoice is
generated for the renewal and available for viewing or download on the
[
View invoices
](
https://customers.gitlab.com/receipts
)
page.
#### Enable automatic renewal
#### Enable
or disable
automatic renewal
To view or change automatic subscription renewal (at the same tier as the
previous period), log in to the
[
Customers Portal
](
https://customers.gitlab.com/customers/sign_in
)
, and:
...
...
@@ -292,7 +292,7 @@ for more information.
### Purchase additional CI/CD minutes
You can
[
purchase additional minutes
](
../../ci/pipelines/cicd_minutes.md#purchase-additional-cicd-minutes
)
for your personal or group namespace.
for your personal or group namespace.
CI/CD minutes are a
**one-time purchase**
, so they do not renew.
## Add-on subscription for additional Storage and Transfer
...
...
@@ -309,7 +309,11 @@ locked. Projects can only be unlocked by purchasing more storage subscription un
### Purchase more storage and transfer
You can purchase storage for your personal or group namespace.
You can purchase a storage subscription for your personal or group namespace.
NOTE:
Storage subscriptions
**[renew automatically](#automatic-renewal) each year**
.
You can
[
cancel the subscription
](
#enable-or-disable-automatic-renewal
)
to disable the automatic renewal.
#### For your personal namespace
...
...
lib/gitlab/popen.rb
View file @
101e7e04
...
...
@@ -10,10 +10,19 @@ module Gitlab
Result
=
Struct
.
new
(
:cmd
,
:stdout
,
:stderr
,
:status
,
:duration
)
# Returns [stdout + stderr, status]
# status is either the exit code or the signal that killed the process
def
popen
(
cmd
,
path
=
nil
,
vars
=
{},
&
block
)
result
=
popen_with_detail
(
cmd
,
path
,
vars
,
&
block
)
[
"
#{
result
.
stdout
}#{
result
.
stderr
}
"
,
result
.
status
&
.
exitstatus
]
# Process#waitpid returns Process::Status, which holds a 16-bit value.
# The higher-order 8 bits hold the exit() code (`exitstatus`).
# The lower-order bits holds whether the process was terminated.
# If the process didn't exit normally, `exitstatus` will be `nil`,
# but we still want a non-zero code, even if the value is
# platform-dependent.
status
=
result
.
status
&
.
exitstatus
||
result
.
status
.
to_i
[
"
#{
result
.
stdout
}#{
result
.
stderr
}
"
,
status
]
end
# Returns Result
...
...
spec/lib/gitlab/popen_spec.rb
View file @
101e7e04
...
...
@@ -40,6 +40,17 @@ RSpec.describe Gitlab::Popen do
it
{
expect
(
@output
).
to
include
(
'No such file or directory'
)
}
end
context
'non-zero status with a kill'
do
let
(
:cmd
)
{
[
Gem
.
ruby
,
"-e"
,
"thr = Thread.new { sleep 5 }; Process.kill(9, Process.pid); thr.join"
]
}
before
do
@output
,
@status
=
@klass
.
new
.
popen
(
cmd
)
end
it
{
expect
(
@status
).
to
eq
(
9
)
}
it
{
expect
(
@output
).
to
be_empty
}
end
context
'unsafe string command'
do
it
'raises an error when it gets called with a string argument'
do
expect
{
@klass
.
new
.
popen
(
'ls'
,
path
)
}.
to
raise_error
(
RuntimeError
)
...
...
spec/services/projects/destroy_service_spec.rb
View file @
101e7e04
...
...
@@ -97,9 +97,13 @@ RSpec.describe Projects::DestroyService, :aggregate_failures do
end
end
shared_examples_for
"deleting a project with merge requests"
do
context
"deleting a project with merge requests"
do
let!
(
:merge_request
)
{
create
(
:merge_request
,
source_project:
project
)
}
before
do
allow
(
project
).
to
receive
(
:destroy!
).
and_return
(
true
)
end
it
"deletes merge request and related records"
do
merge_request_diffs
=
merge_request
.
merge_request_diffs
expect
(
merge_request_diffs
.
size
).
to
eq
(
1
)
...
...
@@ -119,25 +123,6 @@ RSpec.describe Projects::DestroyService, :aggregate_failures do
destroy_project
(
project
,
user
,
{})
end
context
"extract_mr_diff_commit_deletions feature flag"
do
context
"with flag enabled"
do
before
do
stub_feature_flags
(
extract_mr_diff_commit_deletions:
true
)
allow
(
project
).
to
receive
(
:destroy!
).
and_return
(
true
)
end
it_behaves_like
"deleting a project with merge requests"
end
context
"with flag disabled"
do
before
do
stub_feature_flags
(
extract_mr_diff_commit_deletions:
false
)
end
it_behaves_like
"deleting a project with merge requests"
end
end
context
'with running pipelines'
do
let!
(
:pipelines
)
{
create_list
(
:ci_pipeline
,
3
,
:running
,
project:
project
)
}
let
(
:destroy_pipeline_service
)
{
double
(
'DestroyPipelineService'
,
execute:
nil
)
}
...
...
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