Commit 3dda245a authored by GitLab Bot's avatar GitLab Bot

Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-11-20

parents f382173e 21c4428d
......@@ -401,7 +401,7 @@ group :test do
gem 'rails-controller-testing' if rails5? # Rails5 only gem.
gem 'test_after_commit', '~> 1.1' unless rails5? # Remove this gem when migrated to rails 5.0. It's been integrated to rails 5.0.
gem 'sham_rack', '~> 1.3.6'
gem 'concurrent-ruby', '~> 1.0.5'
gem 'concurrent-ruby', '~> 1.1'
gem 'test-prof', '~> 0.2.5'
gem 'rspec_junit_formatter'
end
......
......@@ -136,9 +136,9 @@ GEM
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.0.5)
concurrent-ruby-ext (1.0.5)
concurrent-ruby (= 1.0.5)
concurrent-ruby (1.1.3)
concurrent-ruby-ext (1.1.3)
concurrent-ruby (= 1.1.3)
connection_pool (2.2.2)
crack (0.4.3)
safe_yaml (~> 1.0.0)
......@@ -406,7 +406,7 @@ GEM
json (~> 1.8)
multi_xml (>= 0.5.2)
httpclient (2.8.3)
i18n (1.1.0)
i18n (1.1.1)
concurrent-ruby (~> 1.0)
icalendar (2.4.1)
ice_nine (0.11.2)
......@@ -472,7 +472,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.2.2)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
......@@ -481,7 +481,7 @@ GEM
memoist (0.16.0)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
method_source (0.9.0)
method_source (0.9.2)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2018.0812)
......@@ -504,7 +504,7 @@ GEM
net-ssh (5.0.1)
netrc (0.11.0)
nio4r (2.3.1)
nokogiri (1.8.4)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
nokogumbo (1.5.0)
nokogiri
......@@ -632,7 +632,7 @@ GEM
get_process_mem (~> 0.2)
puma (>= 2.7, < 4)
pyu-ruby-sasl (0.0.3.3)
rack (2.0.5)
rack (2.0.6)
rack-accept (0.4.5)
rack (>= 0.4)
rack-attack (4.4.1)
......@@ -796,8 +796,8 @@ GEM
ruby-progressbar (1.9.0)
ruby-saml (1.7.2)
nokogiri (>= 1.5.10)
ruby_parser (3.9.0)
sexp_processor (~> 4.1)
ruby_parser (3.11.0)
sexp_processor (~> 4.9)
rubyntlm (0.6.2)
rubypants (0.2.0)
rubyzip (1.2.2)
......@@ -837,7 +837,7 @@ GEM
sentry-raven (2.7.2)
faraday (>= 0.7.6, < 1.0)
settingslogic (2.0.9)
sexp_processor (4.9.0)
sexp_processor (4.11.0)
sham_rack (1.3.6)
rack
shoulda-matchers (3.1.2)
......@@ -997,7 +997,7 @@ DEPENDENCIES
chronic (~> 0.10.2)
chronic_duration (~> 0.10.6)
commonmarker (~> 0.17)
concurrent-ruby (~> 1.0.5)
concurrent-ruby (~> 1.1)
connection_pool (~> 2.0)
creole (~> 0.5.0)
database_cleaner (~> 1.5.0)
......
......@@ -133,9 +133,9 @@ GEM
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.0.5)
concurrent-ruby-ext (1.0.5)
concurrent-ruby (= 1.0.5)
concurrent-ruby (1.1.3)
concurrent-ruby-ext (1.1.3)
concurrent-ruby (= 1.1.3)
connection_pool (2.2.2)
crack (0.4.3)
safe_yaml (~> 1.0.0)
......@@ -469,7 +469,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.2.2)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
......@@ -500,7 +500,7 @@ GEM
net-ntp (2.1.3)
net-ssh (5.0.1)
netrc (0.11.0)
nokogiri (1.8.4)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
nokogumbo (1.5.0)
nokogiri
......@@ -788,8 +788,8 @@ GEM
ruby-progressbar (1.9.0)
ruby-saml (1.7.2)
nokogiri (>= 1.5.10)
ruby_parser (3.9.0)
sexp_processor (~> 4.1)
ruby_parser (3.11.0)
sexp_processor (~> 4.9)
rubyntlm (0.6.2)
rubypants (0.2.0)
rubyzip (1.2.2)
......@@ -829,7 +829,7 @@ GEM
sentry-raven (2.7.2)
faraday (>= 0.7.6, < 1.0)
settingslogic (2.0.9)
sexp_processor (4.9.0)
sexp_processor (4.11.0)
sham_rack (1.3.6)
rack
shoulda-matchers (3.1.2)
......@@ -988,7 +988,7 @@ DEPENDENCIES
chronic (~> 0.10.2)
chronic_duration (~> 0.10.6)
commonmarker (~> 0.17)
concurrent-ruby (~> 1.0.5)
concurrent-ruby (~> 1.1)
connection_pool (~> 2.0)
creole (~> 0.5.0)
database_cleaner (~> 1.5.0)
......
......@@ -39,7 +39,7 @@ function blockTagText(text, textArea, blockTag, selected) {
}
}
function moveCursor({ textArea, tag, wrapped, removedLastNewLine, select }) {
function moveCursor({ textArea, tag, positionBetweenTags, removedLastNewLine, select }) {
var pos;
if (!textArea.setSelectionRange) {
return;
......@@ -51,7 +51,7 @@ function moveCursor({ textArea, tag, wrapped, removedLastNewLine, select }) {
return textArea.setSelectionRange(startPosition, endPosition);
}
if (textArea.selectionStart === textArea.selectionEnd) {
if (wrapped) {
if (positionBetweenTags) {
pos = textArea.selectionStart - tag.length;
} else {
pos = textArea.selectionStart;
......@@ -67,7 +67,6 @@ function moveCursor({ textArea, tag, wrapped, removedLastNewLine, select }) {
export function insertMarkdownText({ textArea, text, tag, blockTag, selected, wrap, select }) {
var textToInsert,
inserted,
selectedSplit,
startChar,
removedLastNewLine,
......@@ -155,7 +154,7 @@ export function insertMarkdownText({ textArea, text, tag, blockTag, selected, wr
return moveCursor({
textArea,
tag: tag.replace(textPlaceholder, selected),
wrap,
positionBetweenTags: wrap && selected.length === 0,
removedLastNewLine,
select,
});
......@@ -171,10 +170,6 @@ function updateText({ textArea, tag, blockTag, wrap, select }) {
return insertMarkdownText({ textArea, text, tag, blockTag, selected, wrap, select });
}
function replaceRange(s, start, end, substitute) {
return s.substring(0, start) + substitute + s.substring(end);
}
export function addMarkdownListeners(form) {
return $('.js-md', form)
.off('click')
......
......@@ -58,7 +58,7 @@ class EventsFinder
def by_target_type(events)
return events unless Event::TARGET_TYPES[params[:target_type]]
events.where(target_type: Event::TARGET_TYPES[params[:target_type]])
events.where(target_type: Event::TARGET_TYPES[params[:target_type]].name)
end
# rubocop: enable CodeReuse/ActiveRecord
......
......@@ -100,7 +100,7 @@ module Ci
scope :matches_tag_ids, -> (tag_ids) do
matcher = ::ActsAsTaggableOn::Tagging
.where(taggable_type: CommitStatus)
.where(taggable_type: CommitStatus.name)
.where(context: 'tags')
.where('taggable_id = ci_builds.id')
.where.not(tag_id: tag_ids).select('1')
......@@ -110,7 +110,7 @@ module Ci
scope :with_any_tags, -> do
matcher = ::ActsAsTaggableOn::Tagging
.where(taggable_type: CommitStatus)
.where(taggable_type: CommitStatus.name)
.where(context: 'tags')
.where('taggable_id = ci_builds.id').select('1')
......
......@@ -86,7 +86,7 @@ module Avatarable
params[:model].upload_paths(params[:identifier])
end
Upload.where(uploader: AvatarUploader, path: paths).find_each do |upload|
Upload.where(uploader: AvatarUploader.name, path: paths).find_each do |upload|
model = model_class.instantiate('id' => upload.model_id)
loader.call({ model: model, identifier: File.basename(upload.path) }, upload)
......
......@@ -45,7 +45,7 @@ module Todos
# rubocop: disable CodeReuse/ActiveRecord
def remove_confidential_issue_todos
Todo.where(
target_id: confidential_issues.select(:id), target_type: Issue, user_id: user.id
target_id: confidential_issues.select(:id), target_type: Issue.name, user_id: user.id
).delete_all
end
# rubocop: enable CodeReuse/ActiveRecord
......
......@@ -14,9 +14,9 @@ module Todos
def execute
ProjectFeature.where(project_id: project_ids).each do |project_features|
target_types = []
target_types << Issue if private?(project_features.issues_access_level)
target_types << MergeRequest if private?(project_features.merge_requests_access_level)
target_types << Commit if private?(project_features.repository_access_level)
target_types << Issue.name if private?(project_features.issues_access_level)
target_types << MergeRequest.name if private?(project_features.merge_requests_access_level)
target_types << Commit.name if private?(project_features.repository_access_level)
next if target_types.empty?
......
- labels.each do |label|
%span.label-row.btn-group{ role: "group", aria: { label: label.name }, style: "color: #{text_color_for_bg(label.color)}" }
= link_to_label(label, subject: @project, css_class: 'btn btn-transparent')
%button.btn.btn-transparent.label-remove.js-label-filter-remove{ type: "button", style: "background-color: #{label.color};", data: { label: label.title } }
= icon("times")
---
title: Refine cursor positioning in Markdown Editor for wrap tags
merge_request: 23085
author: Johann Hubert Sonntagbauer
type: changed
---
title: Enable even more frozen string for lib/gitlab
merge_request:
author: gfyoung
type: performance
---
title: 'Rails5: Passing a class as a value in an Active Record query is deprecated'
merge_request: 23164
author: Jasper Maes
type: other
---
title: Bump nokogiri, loofah, and rack gems for security updates
merge_request: 23204
author:
type: security
---
title: Show what RPC is called in the performance bar
merge_request: 23140
author:
type: other
......@@ -1682,6 +1682,11 @@ include:
NOTE: **Note:**
The remote file must be publicly accessible through a simple GET request, as we don't support authentication schemas in the remote URL.
NOTE: **Note:**
In order to include files from another repository inside your local network,
you may need to enable the **Allow requests to the local network from hooks and services** checkbox
located in the **Settings > Network > Outbound requests** section within the **Admin area**.
---
......
# frozen_string_literal: true
# Gitaly note: JV: seems to be completely migrated (behind feature flags).
module Gitlab
module Git
class Blob
......
......@@ -885,12 +885,6 @@ module Gitlab
Gitlab::GitalyClient::ConflictsService.new(self, our_commit_oid, their_commit_oid)
end
def gitaly_migrate(method, status: Gitlab::GitalyClient::MigrationStatus::OPT_IN, &block)
wrapped_gitaly_errors do
Gitlab::GitalyClient.migrate(method, status: status, &block)
end
end
def clean_stale_repository_files
wrapped_gitaly_errors do
gitaly_repository_client.cleanup if exists?
......
......@@ -9,11 +9,6 @@ require 'grpc/health/v1/health_services_pb'
module Gitlab
module GitalyClient
include Gitlab::Metrics::Methods
module MigrationStatus
DISABLED = 1
OPT_IN = 2
OPT_OUT = 3
end
class TooManyInvocationsError < StandardError
attr_reader :call_site, :invocation_count, :max_call_stack
......@@ -31,7 +26,7 @@ module Gitlab
end
end
SERVER_VERSION_FILE = 'GITALY_SERVER_VERSION'.freeze
SERVER_VERSION_FILE = 'GITALY_SERVER_VERSION'
MAXIMUM_GITALY_CALLS = 35
CLIENT_NAME = (Sidekiq.server? ? 'gitlab-sidekiq' : 'gitlab-web').freeze
......@@ -43,11 +38,6 @@ module Gitlab
self.query_time = 0
define_histogram :gitaly_migrate_call_duration_seconds do
docstring "Gitaly migration call execution timings"
base_labels gitaly_enabled: nil, feature: nil
end
define_histogram :gitaly_controller_action_duration_seconds do
docstring "Gitaly endpoint histogram by controller and action combination"
base_labels Gitlab::Metrics::Transaction::BASE_LABELS.merge(gitaly_service: nil, rpc: nil)
......@@ -126,7 +116,6 @@ module Gitlab
def self.call(storage, service, rpc, request, remote_storage: nil, timeout: nil)
start = Gitlab::Metrics::System.monotonic_time
request_hash = request.is_a?(Google::Protobuf::MessageExts) ? request.to_h : {}
@current_call_id ||= SecureRandom.uuid
enforce_gitaly_request_limits(:call)
......@@ -145,9 +134,7 @@ module Gitlab
current_transaction_labels.merge(gitaly_service: service.to_s, rpc: rpc.to_s),
duration)
add_call_details(id: @current_call_id, feature: service, duration: duration, request: request_hash)
@current_call_id = nil
add_call_details(feature: "#{service}##{rpc}", duration: duration, request: request_hash, rpc: rpc)
end
def self.handle_grpc_unavailable!(ex)
......@@ -222,7 +209,7 @@ module Gitlab
result
end
SERVER_FEATURE_FLAGS = %w[gogit_findcommit].freeze
SERVER_FEATURE_FLAGS = %w[].freeze
def self.server_feature_flags
SERVER_FEATURE_FLAGS.map do |f|
......@@ -237,82 +224,8 @@ module Gitlab
params['gitaly_token'].presence || Gitlab.config.gitaly['token']
end
# Evaluates whether a feature toggle is on or off
def self.feature_enabled?(feature_name, status: MigrationStatus::OPT_IN)
# Disabled features are always off!
return false if status == MigrationStatus::DISABLED
feature = Feature.get("gitaly_#{feature_name}")
# If the feature has been set, always evaluate
if Feature.persisted?(feature)
if feature.percentage_of_time_value > 0
# Probabilistically enable this feature
return Random.rand() * 100 < feature.percentage_of_time_value
end
return feature.enabled?
end
# If the feature has not been set, the default depends
# on it's status
case status
when MigrationStatus::OPT_OUT
true
when MigrationStatus::OPT_IN
opt_into_all_features? && !explicit_opt_in_required.include?(feature_name)
else
false
end
rescue => ex
# During application startup feature lookups in SQL can fail
Rails.logger.warn "exception while checking Gitaly feature status for #{feature_name}: #{ex}"
false
end
# We have a mechanism to let GitLab automatically opt in to all Gitaly
# features. We want to be able to exclude some features from automatic
# opt-in. This function has an override in EE.
def self.explicit_opt_in_required
[]
end
# opt_into_all_features? returns true when the current environment
# is one in which we opt into features automatically
def self.opt_into_all_features?
Rails.env.development? || ENV["GITALY_FEATURE_DEFAULT_ON"] == "1"
end
private_class_method :opt_into_all_features?
def self.migrate(feature, status: MigrationStatus::OPT_IN)
# Enforce limits at both the `migrate` and `call` sites to ensure that
# problems are not hidden by a feature being disabled
enforce_gitaly_request_limits(:migrate)
is_enabled = feature_enabled?(feature, status: status)
metric_name = feature.to_s
metric_name += "_gitaly" if is_enabled
Gitlab::Metrics.measure(metric_name) do
# Some migrate calls wrap other migrate calls
allow_n_plus_1_calls do
feature_stack = Thread.current[:gitaly_feature_stack] ||= []
feature_stack.unshift(feature)
begin
start = Gitlab::Metrics::System.monotonic_time
@current_call_id = SecureRandom.uuid
call_details = { id: @current_call_id }
yield is_enabled
ensure
total_time = Gitlab::Metrics::System.monotonic_time - start
gitaly_migrate_call_duration_seconds.observe({ gitaly_enabled: is_enabled, feature: feature }, total_time)
feature_stack.shift
Thread.current[:gitaly_feature_stack] = nil if feature_stack.empty?
add_call_details(call_details.merge(feature: feature, duration: total_time))
end
end
end
def self.feature_enabled?(feature_name)
Feature.enabled?("gitaly_#{feature_name}")
end
# Ensures that Gitaly is not being abuse through n+1 misuse etc
......@@ -368,38 +281,20 @@ module Gitlab
end
private_class_method :decrement_call_count
# Returns an estimate of the number of Gitaly calls made for this
# request
# Returns the of the number of Gitaly calls made for this request
def self.get_request_count
return 0 unless Gitlab::SafeRequestStore.active?
gitaly_migrate_count = get_call_count("gitaly_migrate_actual")
gitaly_call_count = get_call_count("gitaly_call_actual")
# Using the maximum of migrate and call_count will provide an
# indicator of how many Gitaly calls will be made, even
# before a feature is enabled. This provides us with a single
# metric, but not an exact number, but this tradeoff is acceptable
if gitaly_migrate_count > gitaly_call_count
gitaly_migrate_count
else
gitaly_call_count
end
get_call_count("gitaly_call_actual")
end
def self.reset_counts
return unless Gitlab::SafeRequestStore.active?
%w[migrate call].each do |call_site|
Gitlab::SafeRequestStore["gitaly_#{call_site}_actual"] = 0
Gitlab::SafeRequestStore["gitaly_#{call_site}_permitted"] = 0
end
Gitlab::SafeRequestStore["gitaly_call_actual"] = 0
Gitlab::SafeRequestStore["gitaly_call_permitted"] = 0
end
def self.add_call_details(details)
id = details.delete(:id)
return unless id && Gitlab::SafeRequestStore[:peek_enabled]
return unless Gitlab::SafeRequestStore[:peek_enabled]
Gitlab::SafeRequestStore['gitaly_call_details'] ||= {}
Gitlab::SafeRequestStore['gitaly_call_details'][id] ||= {}
......
# frozen_string_literal: true
module Gitlab
module HookData
class BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module HookData
class IssuableBuilder < BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module HookData
class IssueBuilder < BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module HookData
class MergeRequestBuilder < BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module HookData
class NoteBuilder < BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module HookData
class WikiPageBuilder < BaseBuilder
......
# frozen_string_literal: true
module Gitlab
module I18n
class MetadataEntry
......
# frozen_string_literal: true
module Gitlab
module I18n
class PoLinter
......
# frozen_string_literal: true
module Gitlab
module I18n
class TranslationEntry
......
# frozen_string_literal: true
module Gitlab
module Import
class Logger < ::Gitlab::JsonLogger
......
# frozen_string_literal: true
module Gitlab
module ImportExport
module AfterExportStrategies
......
# frozen_string_literal: true
module Gitlab
module ImportExport
module AfterExportStrategies
......
# frozen_string_literal: true
module Gitlab
module ImportExport
module AfterExportStrategies
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class AfterExportStrategyBuilder
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class AttributeCleaner
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class AttributesFinder
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class AvatarRestorer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class AvatarSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
module CommandLineUtil
......
# frozen_string_literal: true
module Gitlab
module ImportExport
Error = Class.new(StandardError)
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class FileImporter
......
# frozen_string_literal: true
module Gitlab
module ImportExport
# Given a class, it finds or creates a new object
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class HashUtil
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class Importer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
# Generates a hash that conforms with http://apidock.com/rails/Hash/to_json
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class LfsRestorer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class LfsSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class MembersMapper
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class MergeRequestParser
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class ProjectTreeRestorer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class ProjectTreeSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class Reader
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class RelationFactory
......@@ -213,7 +215,7 @@ module Gitlab
def update_note_for_missing_author(author_name)
@relation_hash['note'] = '*Blank note*' if @relation_hash['note'].blank?
@relation_hash['note'] += missing_author_note(@relation_hash['updated_at'], author_name)
@relation_hash['note'] = "#{@relation_hash['note']}#{missing_author_note(@relation_hash['updated_at'], author_name)}"
end
def admin_user?
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class RepoRestorer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class RepoSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class Saver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class Shared
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class StatisticsRestorer
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class UploadsManager
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class UploadsRestorer < UploadsSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class UploadsSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class VersionChecker
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class VersionSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class WikiRepoSaver < RepoSaver
......
# frozen_string_literal: true
module Gitlab
module ImportExport
class WikiRestorer < RepoRestorer
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
class ConfigMap
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Helm
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
class Namespace
......
# frozen_string_literal: true
module Gitlab
module Kubernetes
module Pod
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class BranchFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class Client
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class CommentFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class Importer
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class IssuableFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class IssueFormatter < IssuableFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class LabelFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class MilestoneFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class ProjectCreator
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class PullRequestFormatter < IssuableFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class ReleaseFormatter < BaseFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class UserFormatter
......
# frozen_string_literal: true
module Gitlab
module LegacyGithubImport
class WikiFormatter
......
# frozen_string_literal: true
# Class to parse manifest file and build a list of repositories for import
#
# <manifest>
......
# frozen_string_literal: true
module Gitlab
module ManifestImport
class ProjectCreator
......
# frozen_string_literal: true
module Gitlab
module Metrics
class BackgroundTransaction < Transaction
......
# frozen_string_literal: true
module Gitlab
module Metrics
# Class for calculating the difference between two numeric values.
......
# frozen_string_literal: true
module Gitlab
module Metrics
module InfluxDb
......
# frozen_string_literal: true
module Gitlab
module Metrics
# Module for instrumenting methods.
......
# frozen_string_literal: true
module Gitlab
module Metrics
# Class for tracking timing information about method calls
......
# frozen_string_literal: true
# rubocop:disable Style/ClassVars
module Gitlab
......
# frozen_string_literal: true
module Gitlab
module Metrics
module Methods
......
# frozen_string_literal: true
module Gitlab
module Metrics
# Class for storing details of a single metric (label, value, etc).
......
# frozen_string_literal: true
module Gitlab
module Metrics
# Mocks ::Prometheus::Client::Metric and all derived metrics
......
# frozen_string_literal: true
require 'prometheus/client'
module Gitlab
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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