Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
5cbace3fa287
Commit
eea3c4d3
authored
Nov 29, 2019
by
GitLab Bot
Browse files
Add latest changes from gitlab-org/gitlab@master
parent
9bb1bafd3152
Changes
38
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
5cbace3f
...
...
@@ -5,10 +5,11 @@ stages:
-
prepare
-
quick-test
-
test
-
post-test
-
review-prepare
-
review
-
qa
-
post-
test
-
post-
qa
-
notification
-
pages
...
...
.gitlab/ci/review.gitlab-ci.yml
View file @
5cbace3f
...
...
@@ -275,7 +275,7 @@ parallel-spec-reports:
-
.only-review
-
.only:changes-code-qa
image
:
ruby:2.6-alpine
stage
:
post-
test
stage
:
post-
qa
dependencies
:
[
"
review-qa-all"
]
variables
:
NEW_PARALLEL_SPECS_REPORT
:
qa/report-new.html
...
...
app/controllers/projects/merge_requests_controller.rb
View file @
5cbace3f
...
...
@@ -218,11 +218,16 @@ def pipeline_status
end
def
ci_environments_status
environments
=
if
ci_environments_status_on_merge_result?
EnvironmentStatus
.
after_merge_request
(
@merge_request
,
current_user
)
else
EnvironmentStatus
.
for_merge_request
(
@merge_request
,
current_user
)
end
environments
=
if
ci_environments_status_on_merge_result?
if
Feature
.
enabled?
(
:deployment_merge_requests_widget
,
@project
)
EnvironmentStatus
.
for_deployed_merge_request
(
@merge_request
,
current_user
)
else
EnvironmentStatus
.
after_merge_request
(
@merge_request
,
current_user
)
end
else
EnvironmentStatus
.
for_merge_request
(
@merge_request
,
current_user
)
end
render
json:
EnvironmentStatusSerializer
.
new
(
current_user:
current_user
).
represent
(
environments
)
end
...
...
app/helpers/diff_helper.rb
View file @
5cbace3f
...
...
@@ -161,6 +161,18 @@ def diff_file_changed_icon_color(diff_file)
end
end
def
render_overflow_warning?
(
diffs_collection
)
diff_files
=
diffs_collection
.
diff_files
if
diff_files
.
any?
(
&
:too_large?
)
Gitlab
::
Metrics
.
add_event
(
:diffs_overflow_single_file_limits
)
end
diff_files
.
overflow?
.
tap
do
|
overflown
|
Gitlab
::
Metrics
.
add_event
(
:diffs_overflow_collection_limits
)
if
overflown
end
end
private
def
diff_btn
(
title
,
name
,
selected
)
...
...
@@ -203,12 +215,6 @@ def toggle_whitespace_link(url, options)
link_to
"
#{
hide_whitespace?
?
'Show'
:
'Hide'
}
whitespace changes"
,
url
,
class:
options
[
:class
]
end
def
render_overflow_warning?
(
diffs_collection
)
diffs
=
@merge_request_diff
.
presence
||
diffs_collection
.
diff_files
diffs
.
overflow?
end
def
diff_file_path_text
(
diff_file
,
max:
60
)
path
=
diff_file
.
new_path
...
...
app/models/environment_status.rb
View file @
5cbace3f
...
...
@@ -20,6 +20,28 @@ def self.after_merge_request(mr, user)
build_environments_status
(
mr
,
user
,
mr
.
merge_pipeline
)
end
def
self
.
for_deployed_merge_request
(
mr
,
user
)
statuses
=
[]
mr
.
recent_visible_deployments
.
each
do
|
deploy
|
env
=
deploy
.
environment
next
unless
Ability
.
allowed?
(
user
,
:read_environment
,
env
)
statuses
<<
EnvironmentStatus
.
new
(
deploy
.
project
,
env
,
mr
,
deploy
.
sha
)
end
# Existing projects that used deployments prior to the introduction of
# explicitly linked merge requests won't have any data using this new
# approach, so we fall back to retrieving deployments based on CI pipelines.
if
statuses
.
any?
statuses
else
after_merge_request
(
mr
,
user
)
end
end
def
initialize
(
project
,
environment
,
merge_request
,
sha
)
@project
=
project
@environment
=
environment
...
...
app/models/merge_request.rb
View file @
5cbace3f
...
...
@@ -73,6 +73,14 @@ def merge_request_diff
has_many
:merge_request_assignees
has_many
:assignees
,
class_name:
"User"
,
through: :merge_request_assignees
has_many
:deployment_merge_requests
# These are deployments created after the merge request has been merged, and
# the merge request was tracked explicitly (instead of implicitly using a CI
# build).
has_many
:deployments
,
through: :deployment_merge_requests
KNOWN_MERGE_PARAMS
=
[
:auto_merge_strategy
,
:should_remove_source_branch
,
...
...
@@ -1475,6 +1483,10 @@ def etag_caching_enabled?
true
end
def
recent_visible_deployments
deployments
.
visible
.
includes
(
:environment
).
order
(
id: :desc
).
limit
(
10
)
end
private
def
with_rebase_lock
...
...
app/models/repository.rb
View file @
5cbace3f
...
...
@@ -925,7 +925,22 @@ def merge_base(*commits_or_ids)
def
ancestor?
(
ancestor_id
,
descendant_id
)
return
false
if
ancestor_id
.
nil?
||
descendant_id
.
nil?
raw_repository
.
ancestor?
(
ancestor_id
,
descendant_id
)
counter
=
Gitlab
::
Metrics
.
counter
(
:repository_ancestor_calls_total
,
'The number of times we call Repository#ancestor with valid arguments'
)
cache_hit
=
true
cache_key
=
"ancestor:
#{
ancestor_id
}
:
#{
descendant_id
}
"
result
=
request_store_cache
.
fetch
(
cache_key
)
do
cache
.
fetch
(
cache_key
)
do
cache_hit
=
false
raw_repository
.
ancestor?
(
ancestor_id
,
descendant_id
)
end
end
counter
.
increment
(
cache_hit:
cache_hit
.
to_s
)
result
end
def
fetch_as_mirror
(
url
,
forced:
false
,
refmap: :all_refs
,
remote_name:
nil
,
prune:
true
)
...
...
changelogs/unreleased/bvl-cache-repository-ancestor.yml
0 → 100644
View file @
5cbace3f
---
title
:
Cache the ancestor? Gitaly call to speed up polling for the merge request widget
merge_request
:
20958
author
:
type
:
performance
changelogs/unreleased/gitaly-2108-repos-gc-after-move.yml
0 → 100644
View file @
5cbace3f
---
title
:
Run housekeeping after moving a repository between shards
merge_request
:
20863
author
:
type
:
performance
changelogs/unreleased/large_imports_rake_task.yml
0 → 100644
View file @
5cbace3f
---
title
:
Import large gitlab_project exports via rake task
merge_request
:
20724
author
:
type
:
added
doc/development/README.md
View file @
5cbace3f
...
...
@@ -69,6 +69,7 @@ description: 'Learn how to contribute to GitLab.'
-
[
Developing against interacting components or features
](
interacting_components.md
)
-
[
File uploads
](
uploads.md
)
-
[
Auto DevOps development guide
](
auto_devops.md
)
-
[
Mass Inserting Models
](
mass_insert.md
)
-
[
Cycle Analytics development guide
](
cycle_analytics.md
)
## Performance guides
...
...
doc/development/mass_insert.md
0 → 100644
View file @
5cbace3f
# Mass Inserting Rails Models
Setting the environment variable
[
`MASS_INSERT=1`
](
rake_tasks.md#env-variables
)
when running
`rake setup`
will create millions of records, but these records
aren't visible to the
`root`
user by default.
To make any number of the mass-inserted projects visible to the
`root`
user, run
the following snippet in the rails console.
```
ruby
u
=
User
.
find
(
1
)
Project
.
last
(
100
).
each
{
|
p
|
p
.
set_create_timestamps
&&
p
.
add_maintainer
(
u
,
current_user:
u
)
}
# Change 100 to whatever number of projects you need access to
```
doc/development/pipelines.md
View file @
5cbace3f
...
...
@@ -23,15 +23,17 @@ The current stages are:
pipeline early (currently used to run Geo tests when the branch name starts
with
`geo-`
,
`geo/`
, or ends with
`-geo`
).
-
`test`
: This stage includes most of the tests, DB/migration jobs, and static analysis jobs.
-
`post-test`
: This stage includes jobs that build reports or gather data from
the
`test`
stage's jobs (e.g. coverage, Knapsack metadata etc.).
-
`review-prepare`
: This stage includes a job that build the CNG images that are
later used by the (Helm) Review App deployment (see
[
Review Apps
](
testing_guide/review_apps.md
)
for details).
-
`review`
: This stage includes jobs that deploy the GitLab and Docs Review Apps.
-
`qa`
: This stage includes jobs that perform QA tasks against the Review App
that is deployed in the previous stage.
-
`post-qa`
: This stage includes jobs that build reports or gather data from
the
`qa`
stage's jobs (e.g. Review App performance report).
-
`notification`
: This stage includes jobs that sends notifications about pipeline status.
-
`post-test`
: This stage includes jobs that build reports or gather data from
the previous stages' jobs (e.g. coverage, Knapsack metadata etc.).
-
`pages`
: This stage includes a job that deploys the various reports as
GitLab Pages (e.g.
<https://gitlab-org.gitlab.io/gitlab/coverage-ruby/>
,
<https://gitlab-org.gitlab.io/gitlab/coverage-javascript/>
,
...
...
doc/user/permissions.md
View file @
5cbace3f
...
...
@@ -5,7 +5,7 @@ description: 'Understand and explore the user permission levels in GitLab, and w
# Permissions
Users have different abilities depending on the access level they have in a
particular group or project. If a user is both in a
group's project
and the
particular group or project. If a user is both in a
project's group
and the
project itself, the highest permission level is used.
On public and internal projects the Guest role is not enforced. All users will
...
...
lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
View file @
5cbace3f
...
...
@@ -15,15 +15,15 @@ performance:
fi
-
export CI_ENVIRONMENT_URL=$(cat environment_url.txt)
-
mkdir gitlab-exporter
-
wget -O gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/1
0-5
/index.js
-
wget -O gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/1
.0.0
/index.js
-
mkdir sitespeed-results
-
|
if [ -f .gitlab-urls.txt ]
then
sed -i -e 's@^@'"$CI_ENVIRONMENT_URL"'@' .gitlab-urls.txt
docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:
6.3.1
--plugins.add ./gitlab-exporter --outputFolder sitespeed-results .gitlab-urls.txt
docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:
11.2.0
--plugins.add ./gitlab-exporter --outputFolder sitespeed-results .gitlab-urls.txt
else
docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:
6.3.1
--plugins.add ./gitlab-exporter --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL"
docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:
11.2.0
--plugins.add ./gitlab-exporter --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL"
fi
-
mv sitespeed-results/data/performance.json performance.json
artifacts
:
...
...
lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml
View file @
5cbace3f
...
...
@@ -11,7 +11,7 @@ performance:
image
:
docker:git
variables
:
URL
:
https://example.com
SITESPEED_VERSION
:
6.3.1
SITESPEED_VERSION
:
11.2.0
SITESPEED_OPTIONS
:
'
'
services
:
-
docker:stable-dind
...
...
lib/gitlab/diff/file_collection/merge_request_diff.rb
View file @
5cbace3f
...
...
@@ -4,12 +4,16 @@ module Gitlab
module
Diff
module
FileCollection
class
MergeRequestDiff
<
MergeRequestDiffBase
include
Gitlab
::
Utils
::
StrongMemoize
def
diff_files
diff_files
=
super
strong_memoize
(
:diff_files
)
do
diff_files
=
super
diff_files
.
each
{
|
diff_file
|
cache
.
decorate
(
diff_file
)
}
diff_files
.
each
{
|
diff_file
|
cache
.
decorate
(
diff_file
)
}
diff_files
diff_files
end
end
override
:write_cache
...
...
lib/gitlab/slash_commands/presenters/access.rb
View file @
5cbace3f
...
...
@@ -34,8 +34,8 @@ def not_found
def
authorize
message
=
if
@
resource
":wave: Hi there! Before I do anything for you, please [connect your GitLab account](
#{
@
resource
}
)."
if
resource
":wave: Hi there! Before I do anything for you, please [connect your GitLab account](
#{
resource
}
)."
else
":sweat_smile: Couldn't identify you, nor can I authorize you!"
end
...
...
lib/gitlab/slash_commands/presenters/base.rb
View file @
5cbace3f
...
...
@@ -18,6 +18,8 @@ def display_errors
private
attr_reader
:resource
def
header_with_list
(
header
,
items
)
message
=
[
header
]
...
...
@@ -67,12 +69,51 @@ def format(string)
def
resource_url
url_for
(
[
@
resource
.
project
.
namespace
.
becomes
(
Namespace
),
@
resource
.
project
,
@
resource
resource
.
project
.
namespace
.
becomes
(
Namespace
),
resource
.
project
,
resource
]
)
end
def
project_link
"[
#{
project
.
full_name
}
](
#{
project
.
web_url
}
)"
end
def
author_profile_link
"[
#{
author
.
to_reference
}
](
#{
url_for
(
author
)
}
)"
end
def
response_message
(
custom_pretext:
pretext
)
{
attachments:
[
{
title:
"
#{
issue
.
title
}
·
#{
issue
.
to_reference
}
"
,
title_link:
resource_url
,
author_name:
author
.
name
,
author_icon:
author
.
avatar_url
,
fallback:
fallback_message
,
pretext:
custom_pretext
,
text:
text
,
color:
color
(
resource
),
fields:
fields
,
mrkdwn_in:
fields_with_markdown
}
]
}
end
def
pretext
''
end
def
text
''
end
def
fields_with_markdown
%i(title pretext fields)
end
end
end
end
...
...
lib/gitlab/slash_commands/presenters/issue_base.rb
View file @
5cbace3f
...
...
@@ -42,17 +42,11 @@ def fields
]
end
def
project_link
"[
#{
project
.
full_name
}
](
#{
project
.
web_url
}
)"
end
def
author_profile_link
"[
#{
author
.
to_reference
}
](
#{
url_for
(
author
)
}
)"
end
private
attr_reader
:resource
alias_method
:issue
,
:resource
end
end
end
...
...
Prev
1
2
Next
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