Commit 97f5ff97 authored by GitLab Bot's avatar GitLab Bot

Automatic merge of gitlab-org/gitlab master

parents 172c159b bcc330ff
......@@ -32,10 +32,6 @@
- if page_canonical_link
%link{ rel: 'canonical', href: page_canonical_link }
- if user_application_theme == 'gl-dark'
= preload_link_tag(path_to_stylesheet('application_utilities_dark'))
- else
= preload_link_tag(path_to_stylesheet('application_utilities'))
= yield :prefetch_asset_tags
= favicon_link_tag favicon, id: 'favicon', data: { original_href: favicon }, type: 'image/png'
......
= cache_if(Feature.enabled?(:cached_loading_hints, current_user), [ActionController::Base.asset_host, user_application_theme, user_color_scheme], expires_in: 1.minute) do
- css_crossorigin = ActionController::Base.asset_host ? 'anonymous' : nil
- if ActionController::Base.asset_host
%link{ rel: 'dns-prefetch', href: ActionController::Base.asset_host }
%link{ rel: 'preconnect', href: ActionController::Base.asset_host, crossorigin: '' }
- if user_application_theme == 'gl-dark'
%link{ { rel: 'preload', href: stylesheet_url('application_dark'), as: 'style' }, ActionController::Base.asset_host ? { crossorigin: 'anonymous' } : {} }
= preload_link_tag(path_to_stylesheet('application_utilities_dark'), crossorigin: css_crossorigin)
= preload_link_tag(path_to_stylesheet('application_dark'), crossorigin: css_crossorigin)
- else
%link{ { rel: 'preload', href: stylesheet_url('application'), as: 'style' }, ActionController::Base.asset_host ? { crossorigin: 'anonymous' } : {} }
%link{ { rel: 'preload', href: stylesheet_url("highlight/themes/#{user_color_scheme}"), as: 'style' }, ActionController::Base.asset_host ? { crossorigin: 'anonymous' } : {} }
= preload_link_tag(path_to_stylesheet('application_utilities'), crossorigin: css_crossorigin)
= preload_link_tag(path_to_stylesheet('application'), crossorigin: css_crossorigin)
= preload_link_tag(path_to_stylesheet("highlight/themes/#{user_color_scheme}"), crossorigin: css_crossorigin)
- if Gitlab::Tracking.enabled? && Gitlab::CurrentSettings.snowplow_collector_hostname
%link{ rel: 'preconnect', href: Gitlab::CurrentSettings.snowplow_collector_hostname, crossorigin: '' }
......@@ -5,7 +5,6 @@ class AdminEmailWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -8,7 +8,6 @@ module Analytics
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
DEFAULT_DELAY = 3.minutes.freeze
......
......@@ -6,7 +6,6 @@ module AuthorizedProjectUpdate
data_consistency :always
sidekiq_options retry: 3
# This worker does not perform work scoped to a context
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -6,7 +6,6 @@ module Ci
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :continuous_integration
......
......@@ -7,7 +7,6 @@ module Ci
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module Ci
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,8 +5,6 @@ class CiPlatformMetricsUpdateCronWorker # rubocop:disable Scalability/Idempotent
data_consistency :always
sidekiq_options retry: 3
# This worker does not perform work scoped to a context
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -7,7 +7,6 @@ module Clusters
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
include ExclusiveLeaseGuard
......
......@@ -6,7 +6,6 @@ module Database
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :database
......
......@@ -4,7 +4,6 @@ module Database
class PartitionManagementWorker
include ApplicationWorker
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
data_consistency :always
......
......@@ -6,7 +6,6 @@ module Environments
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :continuous_delivery
......
......@@ -5,7 +5,6 @@ class ExpireBuildArtifactsWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -10,7 +10,6 @@ module Gitlab
included do
include ApplicationWorker
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker updates several import states inline and does not schedule
# other jobs. So no context needed
......
......@@ -5,7 +5,6 @@ class ImportExportProjectCleanupWorker # rubocop:disable Scalability/IdempotentW
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class IssueDueSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :issue_tracking
......
......@@ -5,7 +5,6 @@ class MemberInvitationReminderEmailsWorker # rubocop:disable Scalability/Idempot
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :subgroups
......
......@@ -7,7 +7,6 @@ module Metrics
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module Namespaces
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :subgroups
......
......@@ -6,7 +6,6 @@ module Namespaces
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :source_code_management
......
......@@ -7,7 +7,6 @@ module Packages
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :package_registry
......
......@@ -5,7 +5,6 @@ class PagesDomainRemovalCronWorker # rubocop:disable Scalability/IdempotentWorke
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :pages
......
......@@ -5,7 +5,6 @@ class PagesDomainSslRenewalCronWorker # rubocop:disable Scalability/IdempotentWo
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :pages
......
......@@ -5,7 +5,6 @@ class PagesDomainVerificationCronWorker # rubocop:disable Scalability/Idempotent
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :pages
......
......@@ -5,7 +5,6 @@ class PartitionCreationWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :database
......
......@@ -6,7 +6,6 @@ module PersonalAccessTokens
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :authentication_and_authorization
......
......@@ -6,7 +6,6 @@ module PersonalAccessTokens
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :authentication_and_authorization
......
......@@ -5,7 +5,6 @@ class PipelineScheduleWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :continuous_integration
......
......@@ -5,7 +5,6 @@ class PruneOldEventsWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module Releases
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :release_evidence
......
......@@ -5,7 +5,6 @@ class RemoveExpiredGroupLinksWorker # rubocop:disable Scalability/IdempotentWork
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :authentication_and_authorization
......
......@@ -5,7 +5,6 @@ class RemoveExpiredMembersWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :authentication_and_authorization
......
......@@ -5,7 +5,6 @@ class RemoveUnacceptedMemberInvitesWorker # rubocop:disable Scalability/Idempote
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :authentication_and_authorization
......
......@@ -5,7 +5,6 @@ class RemoveUnreferencedLfsObjectsWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class RepositoryArchiveCacheWorker # rubocop:disable Scalability/IdempotentWorke
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module RepositoryCheck
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class RequestsProfilesWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class ScheduleMergeRequestCleanupRefsWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :code_review
......
......@@ -5,7 +5,6 @@ class ScheduleMigrateExternalDiffsWorker # rubocop:disable Scalability/Idempoten
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext:
# This schedules the `MigrateExternalDiffsWorker`
# issue for adding context: https://gitlab.com/gitlab-org/gitlab/issues/202100
......
......@@ -6,7 +6,6 @@ module SshKeys
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :compliance_management
......
......@@ -6,7 +6,6 @@ module SshKeys
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :compliance_management
......
......@@ -5,7 +5,6 @@ class StuckCiJobsWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :continuous_integration
......
......@@ -6,7 +6,6 @@ class StuckExportJobsWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker updates export states inline and does not schedule
# other jobs.
......
......@@ -5,7 +5,6 @@ class StuckMergeJobsWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :code_review
......
......@@ -5,7 +5,6 @@ class TrendingProjectsWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :source_code_management
......
......@@ -5,7 +5,6 @@ class UpdateContainerRegistryInfoWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :container_registry
......
......@@ -7,7 +7,6 @@ module UserStatusCleanup
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
include CronjobQueue
# rubocop:enable Scalability/CronWorkerContext
......
......@@ -6,7 +6,6 @@ module Users
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class X509IssuerCrlCheckWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
feature_category :source_code_management
......
- if show_promotions? && show_callout?('promote_repository_features_dismissed') && (!@project.feature_available?(:push_rules) || !@project.feature_available?(:repository_mirrors) || !@project.feature_available?(:protected_refs_for_users))
.user-callout.promotion-callout{ id: 'promote_repository_features', data: { uid: 'promote_repository_features_dismissed' } }
.bordered-box.content-block
%button.gl-button.btn.btn-default-tertiary.close.js-close-callout{ type: 'button', 'aria-label' => 'Dismiss repository features promotion' }
%button.gl-button.btn.btn-default-tertiary.close.js-close-callout{ type: 'button', 'aria-label' => s_('Promotions|Dismiss repository features promotion') }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.svg-container
= custom_icon('icon_push_rules')
.user-callout-copy
%h4
- if Gitlab::CurrentSettings.should_check_namespace_plan?
Upgrade your plan to improve repositories.
= s_('Promotions|Upgrade your plan to improve repositories.')
- else
Improve repositories with GitLab Enterprise Edition.
= s_('Promotions|Improve repositories with GitLab Enterprise Edition.')
%ul
- unless @project.feature_available?(:push_rules)
%li
= link_to 'Push Rules', help_page_path('push_rules/push_rules.md'), target: '_blank'
= link_to s_('Promotions|Push Rules'), help_page_path('push_rules/push_rules.md'), target: '_blank'
%p
Push Rules are defined per project so you can have different rules applied to different projects depends on your needs.
= s_('Promotions|Push Rules are defined per project so you can have different rules applied to different projects depends on your needs.')
- unless @project.feature_available?(:repository_mirrors)
%li
= link_to 'Repository Mirroring', help_page_path('user/project/repository/repository_mirroring.md'), target: '_blank'
= link_to s_('Promotions|Repository Mirroring'), help_page_path('user/project/repository/repository_mirroring.md'), target: '_blank'
%p
Repository Mirroring is a way to mirror repositories from external sources. It can be used to mirror all branches, tags, and commits that you have in your repository.
= s_('Promotions|Repository Mirroring is a way to mirror repositories from external sources. It can be used to mirror all branches, tags, and commits that you have in your repository.')
- unless @project.feature_available?(:protected_refs_for_users)
%li
= link_to 'Better Protected Branches', help_page_path('user/project/protected_branches.md'), target: '_blank'
= link_to s_('Promotions|Better Protected Branches'), help_page_path('user/project/protected_branches.md'), target: '_blank'
%p
You can restrict access to protected branches by choosing a role (Maintainers, Developers) as well as certain users.
= s_('Promotions|You can restrict access to protected branches by choosing a role (Maintainers, Developers) as well as certain users.')
= render 'shared/promotions/promotion_link_project', location: :repository_features
......@@ -5,7 +5,6 @@ class ActiveUserCountThresholdWorker # rubocop:disable Scalability/IdempotentWor
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class AdjournedGroupDeletionWorker # rubocop:disable Scalability/IdempotentWorke
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
INTERVAL = 10.seconds.to_i
......
......@@ -5,7 +5,6 @@ class AdjournedProjectsDeletionCronWorker # rubocop:disable Scalability/Idempote
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue
INTERVAL = 10.seconds.to_i
......
......@@ -8,7 +8,6 @@ module Analytics
data_consistency :always
sidekiq_options retry: 3
# This worker does not perform work scoped to a context
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
......@@ -5,7 +5,6 @@ class ClearSharedRunnersMinutesWorker # rubocop:disable Scalability/IdempotentWo
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
# all queries are scoped across multiple namespaces
......
......@@ -6,7 +6,6 @@ module Elastic
data_consistency :always
sidekiq_options retry: 3
include Gitlab::ExclusiveLeaseHelpers
# There is no onward scheduling and this cron handles work from across the
# application, so there's no useful context to add.
......
......@@ -5,7 +5,6 @@ class ElasticRemoveExpiredNamespaceSubscriptionsFromIndexCronWorker
data_consistency :always
sidekiq_options retry: 3
include Gitlab::ExclusiveLeaseHelpers
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
include ExclusiveLeaseGuard
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
......
......@@ -6,7 +6,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -7,7 +7,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -10,7 +10,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
prepend Reenqueuer
include ::Gitlab::Geo::LogHelpers
......
......@@ -8,7 +8,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
include ::Gitlab::Geo::LogHelpers
include ExclusiveLeaseGuard
......
......@@ -6,7 +6,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -9,7 +9,6 @@ module Geo
data_consistency :always
sidekiq_options retry: 3
include ::Gitlab::Geo::LogHelpers
# This worker does not perform work scoped to a context
......
......@@ -5,7 +5,6 @@ class HistoricalDataWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -6,7 +6,6 @@ module IncidentManagement
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
idempotent!
......
......@@ -5,7 +5,6 @@ class LdapAllGroupsSyncWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -5,7 +5,6 @@ class LdapSyncWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :authentication_and_authorization
......
......@@ -5,7 +5,6 @@ class PseudonymizerWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -3,7 +3,6 @@
class UpdateAllMirrorsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
sidekiq_options retry: 3
include CronjobQueue
feature_category :source_code_management
......
......@@ -5,7 +5,6 @@ class UpdateMaxSeatsUsedForGitlabComSubscriptionsWorker # rubocop:disable Scalab
data_consistency :always
sidekiq_options retry: 3
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
feature_category :utilization
......
......@@ -7,7 +7,6 @@ module Vulnerabilities
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -7,7 +7,6 @@ module Vulnerabilities
data_consistency :always
sidekiq_options retry: 3
# rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context
include CronjobQueue
......
......@@ -26412,6 +26412,9 @@ msgstr ""
msgid "Promotions|Audit Events is a way to keep track of important events that happened in GitLab."
msgstr ""
msgid "Promotions|Better Protected Branches"
msgstr ""
msgid "Promotions|Burndown Charts are visual representations of the progress of completing a milestone. At a glance, you see the current state for the completion a given milestone. Without them, you would have to organize the data from the milestone and plot it yourself to have the same sense of progress."
msgstr ""
......@@ -26436,6 +26439,9 @@ msgstr ""
msgid "Promotions|Dismiss burndown charts promotion"
msgstr ""
msgid "Promotions|Dismiss repository features promotion"
msgstr ""
msgid "Promotions|Don't show me this again"
msgstr ""
......@@ -26451,6 +26457,9 @@ msgstr ""
msgid "Promotions|Improve milestones with Burndown Charts."
msgstr ""
msgid "Promotions|Improve repositories with GitLab Enterprise Edition."
msgstr ""
msgid "Promotions|Improve search with Advanced Search and GitLab Enterprise Edition."
msgstr ""
......@@ -26463,6 +26472,18 @@ msgstr ""
msgid "Promotions|Not now, thanks!"
msgstr ""
msgid "Promotions|Push Rules"
msgstr ""
msgid "Promotions|Push Rules are defined per project so you can have different rules applied to different projects depends on your needs."
msgstr ""
msgid "Promotions|Repository Mirroring"
msgstr ""
msgid "Promotions|Repository Mirroring is a way to mirror repositories from external sources. It can be used to mirror all branches, tags, and commits that you have in your repository."
msgstr ""
msgid "Promotions|See the other features in the %{subscription_link_start}Premium plan%{subscription_link_end}"
msgstr ""
......@@ -26508,6 +26529,9 @@ msgstr ""
msgid "Promotions|Upgrade your plan to improve milestones with Burndown Charts."
msgstr ""
msgid "Promotions|Upgrade your plan to improve repositories."
msgstr ""
msgid "Promotions|Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group."
msgstr ""
......@@ -26523,6 +26547,9 @@ msgstr ""
msgid "Promotions|With Contribution Analytics you can have an overview for the activity of issues, merge requests, and push events of your organization and its members."
msgstr ""
msgid "Promotions|You can restrict access to protected branches by choosing a role (Maintainers, Developers) as well as certain users."
msgstr ""
msgid "Promotions|description templates"
msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment