Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-08-05 03:10:19 +00:00
parent dbc4b385d2
commit 24fca38040
14 changed files with 168 additions and 22 deletions

View File

@ -48,6 +48,8 @@ tasks:
make gitlab-db-migrate
fi
cd /workspace/gitlab-development-kit/gitlab
# Display which branch we're on
git branch --show-current
# Install Lefthook
bundle exec lefthook install
git checkout db/structure.sql

View File

@ -7,20 +7,22 @@
.form-group
= f.label :help_page_text, _('Additional text to show on the Help page'), class: 'label-bold'
= f.text_area :help_page_text, class: 'form-control gl-form-input', rows: 4
.form-text.text-muted= _('Markdown enabled')
.form-text.text-muted= _('Markdown enabled.')
.form-group
.form-check
= f.check_box :help_page_hide_commercial_content, class: 'form-check-input'
= f.label :help_page_hide_commercial_content, class: 'form-check-label' do
= _('Hide marketing-related entries from the Help page.')
= _('Hide marketing-related entries from the Help page')
.form-group
= f.label :help_page_support_url, _('Support page URL'), class: 'label-bold'
= f.text_field :help_page_support_url, class: 'form-control gl-form-input', placeholder: 'http://company.example.com/getting-help', :'aria-describedby' => 'support_help_block'
%span.form-text.text-muted#support_help_block= _('Alternate support URL for Help page and Help dropdown')
= f.text_field :help_page_support_url, class: 'form-control gl-form-input', placeholder: 'https://company.example.com/getting-help', :'aria-describedby' => 'support_help_block'
%span.form-text.text-muted#support_help_block= _('Alternate support URL for Help page and Help dropdown.')
- if show_documentation_base_url_field?
.form-group
= f.label :help_page_documentation_base_url, _('Documentation pages URL'), class: 'label-bold'
= f.text_field :help_page_documentation_base_url, class: 'form-control gl-form-input', placeholder: 'https://docs.gitlab.com'
- docs_link_url = help_page_path('user/admin_area/settings/help_page', anchor: 'destination-requirements')
- docs_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: docs_link_url }
%span.form-text.text-muted#support_help_block= html_escape(_('Requests for pages at %{code_start}%{help_text_url}%{code_end} redirect to the URL. The destination must meet certain requirements. %{docs_link_start}Learn more.%{docs_link_end}')) % { code_start: '<code>'.html_safe, help_text_url: help_url, code_end: '</code>'.html_safe, docs_link_start: docs_link_start, docs_link_end: '</a>'.html_safe }
= f.submit _('Save changes'), class: "gl-button btn btn-confirm"

View File

@ -166,6 +166,11 @@ curl --header "Authorization: Bearer OAUTH-TOKEN" "https://gitlab.example.com/ap
Read more about [GitLab as an OAuth2 provider](oauth2.md).
NOTE:
We recommend that OAuth access tokens have an expiration. You can use a `refresh_token` to refresh tokens. Integrations may need to be updated to refresh tokens prior to expiration, which is based on the [expires_in](https://datatracker.ietf.org/doc/html/rfc6749#appendix-A.14) property in the token endpoint response.
A default refresh setting of two hours is tracked in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/336598).
### Personal/project access tokens
You can use access tokens to authenticate with the API by passing it in either

View File

@ -214,9 +214,12 @@ To use SSH with GitLab, copy your public key to your GitLab account.
1. In the **Title** text box, type a description, like _Work Laptop_ or
_Home Workstation_.
1. Optional. In the **Expires at** box, select an expiration date. (Introduced in [GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/36243).)
The expiration date is informational only, and does not prevent you from using
the key. However, administrators can view expiration dates and
use them for guidance when [deleting keys](../user/admin_area/credentials_inventory.md#delete-a-users-ssh-key).
In:
- GitLab 13.12 and earlier, the expiration date is informational only. It doesn't prevent
you from using the key. Administrators can view expiration dates and use them for
guidance when [deleting keys](../user/admin_area/credentials_inventory.md#delete-a-users-ssh-key).
- GitLab 14.0 and later, the expiration date is enforced. Administrators can
[allow expired keys to be used](../user/admin_area/settings/account_and_limit_settings.md#allow-expired-ssh-keys-to-be-used).
- GitLab checks all SSH keys at 02:00 AM UTC every day. It emails an expiration notice for all SSH keys that expire on the current date. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/322637) in GitLab 13.11.)
- GitLab checks all SSH keys at 01:00 AM UTC every day. It emails an expiration notice for all SSH keys that are scheduled to expire seven days from now. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/322637) in GitLab 13.11.)
1. Select **Add key**.

View File

@ -66,18 +66,24 @@ You can specify a custom URL to which users are directed when they:
1. In the **Support page URL** field, enter the URL.
1. Select **Save changes**.
## Redirect GitLab documentation links
## Redirect `/help` pages
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/43157) in GitLab 13.5.
> - Enabled on GitLab.com and is ready for production use. Available to GitLab.com administrators only.
> - Enabled on GitLab.com and is ready for production use.
NOTE:
On self-managed GitLab, by default this feature is not available. To make it available, ask an administrator to
[enable the `:help_page_documentation_redirect` flag](../../../administration/feature_flags.md).
On GitLab.com, this feature is available but can be configured by GitLab.com administrators only.
Documentation links go to the `/help` section on the instance by default, but you can
redirect these links to an external documentation site like `https://docs.gitlab.com`:
The `/help` URL of a GitLab instance displays a basic version of the documentation sourced from the
[`doc` directory](https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc) of GitLab. `/help` links
are often used for contextual help.
You can redirect these `/help` links to either:
- The more navigable and searchable version published at [`docs.gitlab.com`](https://docs.gitlab.com).
- A destination that meets [necessary requirements](#destination-requirements).
1. On the top bar, select **Menu >** **{admin}** **Admin**.
1. In the left sidebar, select **Settings > Preferences**.
@ -85,6 +91,18 @@ redirect these links to an external documentation site like `https://docs.gitlab
1. In the **Documentation pages URL** field, enter the URL.
1. Select **Save changes**.
### Destination requirements
When redirecting `/help`, GitLab:
- Redirects requests to the specified URL.
- Appends `ee` and the documentation path to the URL.
- Appends `.html` to the URL, and removes `.md` if necessary.
For example, if the URL is set to `https://docs.gitlab.com`, requests for
`/help/user/admin_area/settings/help_page.md` redirect to:
`https://docs.gitlab.com/ee/user/admin_area/settings/help_page.html`.
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues

View File

@ -38,7 +38,7 @@ or other scanners) during a scan could cause inaccurate results.
You can run a Web API fuzzing scan using the following methods:
- [OpenAPI Specification](#openapi-specification) - version 2.0 or 3.0
- [OpenAPI Specification](#openapi-specification) - version 2, and 3.
- [HTTP Archive](#http-archive-har) (HAR)
- [Postman Collection](#postman-collection) - version 2.0 or 2.1
@ -112,6 +112,8 @@ To generate an API Fuzzing configuration snippet:
### OpenAPI Specification
> Support for OpenAPI Specification v3.1 was
> [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/327268) in GitLab 14.2.
> Support for OpenAPI Specification using YAML format was
> [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330583) in GitLab 14.0.
> Support for OpenAPI Specification v3.0 was

View File

@ -95,7 +95,7 @@ You may enable or disable project access token creation for all projects in a gr
Even when creation is disabled, you can still use and revoke existing project access tokens.
This setting is available only on top-level groups.
## Group access token workaround **(FREE SELF)**
## Group access token workaround **(FREE SELF)**
NOTE:
This section describes a workaround and is subject to change.

View File

@ -40,7 +40,7 @@ module Gitlab
return [] if newrevs.empty?
@commits ||= project.repository.new_commits(newrevs)
@commits ||= project.repository.new_commits(newrevs, allow_quarantine: true)
end
# All commits which have been newly introduced via the given revision.

View File

@ -354,9 +354,9 @@ module Gitlab
end
end
def new_commits(newrevs)
def new_commits(newrevs, allow_quarantine: false)
wrapped_gitaly_errors do
gitaly_commit_client.list_commits(Array.wrap(newrevs) + %w[--not --all])
gitaly_commit_client.list_new_commits(Array.wrap(newrevs), allow_quarantine: allow_quarantine)
end
end

View File

@ -265,6 +265,31 @@ module Gitlab
consume_commits_response(response)
end
# List all commits which are new in the repository. If commits have been pushed into the repo
def list_new_commits(revisions, allow_quarantine: false)
git_env = Gitlab::Git::HookEnv.all(@gitaly_repo.gl_repository)
if allow_quarantine && git_env['GIT_OBJECT_DIRECTORY_RELATIVE'].present?
# If we have a quarantine environment, then we can optimize the check
# by doing a ListAllCommitsRequest. Instead of walking through
# references, we just walk through all quarantined objects, which is
# a lot more efficient. To do so, we throw away any alternate object
# directories, which point to the main object directory of the
# repository, and only keep the object directory which points into
# the quarantine object directory.
quarantined_repo = @gitaly_repo.dup
quarantined_repo.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string)
request = Gitaly::ListAllCommitsRequest.new(
repository: quarantined_repo
)
response = GitalyClient.call(@repository.storage, :commit_service, :list_all_commits, request, timeout: GitalyClient.medium_timeout)
consume_commits_response(response)
else
list_commits(Array.wrap(revisions) + %w[--not --all])
end
end
def list_commits_by_oid(oids)
return [] if oids.empty?

View File

@ -3420,7 +3420,7 @@ msgstr ""
msgid "Also unassign this user from related issues and merge requests"
msgstr ""
msgid "Alternate support URL for Help page and Help dropdown"
msgid "Alternate support URL for Help page and Help dropdown."
msgstr ""
msgid "Alternatively, you can convert your account to a managed account by the %{group_name} group."
@ -16363,7 +16363,7 @@ msgstr ""
msgid "Hide list"
msgstr ""
msgid "Hide marketing-related entries from the Help page."
msgid "Hide marketing-related entries from the Help page"
msgstr ""
msgid "Hide payload"
@ -20211,7 +20211,7 @@ msgstr ""
msgid "Markdown Help"
msgstr ""
msgid "Markdown enabled"
msgid "Markdown enabled."
msgstr ""
msgid "Markdown is supported"
@ -28080,6 +28080,9 @@ msgstr ""
msgid "Requests Profiles"
msgstr ""
msgid "Requests for pages at %{code_start}%{help_text_url}%{code_end} redirect to the URL. The destination must meet certain requirements. %{docs_link_start}Learn more.%{docs_link_end}"
msgstr ""
msgid "Requests per period"
msgstr ""

View File

@ -585,7 +585,7 @@ RSpec.describe 'Admin updates settings' do
page.within('.as-help-page') do
fill_in 'Additional text to show on the Help page', with: 'Example text'
check 'Hide marketing-related entries from the Help page.'
check 'Hide marketing-related entries from the Help page'
fill_in 'Support page URL', with: new_support_url
fill_in 'Documentation pages URL', with: new_documentation_url
click_button 'Save changes'

View File

@ -70,7 +70,7 @@ RSpec.describe Gitlab::Checks::ChangesAccess do
let(:expected_commit) { instance_double(Commit) }
it 'returns only commits with non empty revisions' do
expect(project.repository).to receive(:new_commits).with([newrev]) { [expected_commit] }
expect(project.repository).to receive(:new_commits).with([newrev], { allow_quarantine: true }) { [expected_commit] }
expect(subject.commits).to eq([expected_commit])
end
end

View File

@ -343,6 +343,92 @@ RSpec.describe Gitlab::GitalyClient::CommitService do
end
end
describe '#list_new_commits' do
let(:revisions) { [revision] }
let(:gitaly_commits) { create_list(:gitaly_commit, 3) }
let(:commits) { gitaly_commits.map { |c| Gitlab::Git::Commit.new(repository, c) }}
subject { client.list_new_commits(revisions, allow_quarantine: allow_quarantine) }
shared_examples 'a #list_all_commits message' do
it 'sends a list_all_commits message' do
expected_repository = repository.gitaly_repository.dup
expected_repository.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string)
expect_next_instance_of(Gitaly::CommitService::Stub) do |service|
expect(service).to receive(:list_all_commits)
.with(gitaly_request_with_params(repository: expected_repository), kind_of(Hash))
.and_return([Gitaly::ListAllCommitsResponse.new(commits: gitaly_commits)])
end
expect(subject).to eq(commits)
end
end
shared_examples 'a #list_commits message' do
it 'sends a list_commits message' do
expect_next_instance_of(Gitaly::CommitService::Stub) do |service|
expect(service).to receive(:list_commits)
.with(gitaly_request_with_params(revisions: revisions + %w[--not --all]), kind_of(Hash))
.and_return([Gitaly::ListCommitsResponse.new(commits: gitaly_commits)])
end
expect(subject).to eq(commits)
end
end
before do
::Gitlab::GitalyClient.clear_stubs!
allow(Gitlab::Git::HookEnv)
.to receive(:all)
.with(repository.gl_repository)
.and_return(git_env)
end
context 'with hook environment' do
let(:git_env) do
{
'GIT_OBJECT_DIRECTORY_RELATIVE' => '.git/objects',
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE' => ['/dir/one', '/dir/two']
}
end
context 'with allowed quarantine' do
let(:allow_quarantine) { true }
it_behaves_like 'a #list_all_commits message'
end
context 'with disallowed quarantine' do
let(:allow_quarantine) { false }
it_behaves_like 'a #list_commits message'
end
end
context 'without hook environment' do
let(:git_env) do
{
'GIT_OBJECT_DIRECTORY_RELATIVE' => '',
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE' => []
}
end
context 'with allowed quarantine' do
let(:allow_quarantine) { true }
it_behaves_like 'a #list_commits message'
end
context 'with disallowed quarantine' do
let(:allow_quarantine) { false }
it_behaves_like 'a #list_commits message'
end
end
end
describe '#commit_stats' do
let(:request) do
Gitaly::CommitStatsRequest.new(