diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue index db4a4ece002..33db9b87b17 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_info.vue @@ -32,12 +32,12 @@ export default { }, }, deployedTextMap: { - [MANUAL_DEPLOY]: __('Can deploy manually to'), + [MANUAL_DEPLOY]: __('Can be manually deployed to'), [WILL_DEPLOY]: __('Will deploy to'), [RUNNING]: __('Deploying to'), [SUCCESS]: __('Deployed to'), [FAILED]: __('Failed to deploy to'), - [CANCELED]: __('Canceled deploy to'), + [CANCELED]: __('Canceled deployment to'), }, computed: { deployTimeago() { diff --git a/app/assets/javascripts/vue_shared/components/bar_chart.vue b/app/assets/javascripts/vue_shared/components/bar_chart.vue index ff718eacc5b..25d7bfe515c 100644 --- a/app/assets/javascripts/vue_shared/components/bar_chart.vue +++ b/app/assets/javascripts/vue_shared/components/bar_chart.vue @@ -124,7 +124,9 @@ export default { }, }, mounted() { - this.draw(); + if (!this.allValuesEmpty) { + this.draw(); + } }, methods: { draw() { @@ -151,14 +153,7 @@ export default { this.yScale = d3.scaleLinear().rangeRound([this.vbHeight, 0]); this.xScale.domain(this.graphData.map(d => d.name)); - /* - If we have all-zero graph we want graph to center 0 on axis and not to draw - any kind of ticks on Y axis. Infinity allows us to do that. - - See https://gitlab.com/gitlab-org/gitlab/merge_requests/20627#note_251484582 - for detailed explanation - */ - this.yScale.domain([0, d3.max(this.graphData.map(d => d.value)) || Infinity]); + this.yScale.domain([0, d3.max(this.graphData.map(d => d.value))]); // Zoom/Panning Function this.zoom = d3 diff --git a/app/helpers/sidekiq_helper.rb b/app/helpers/sidekiq_helper.rb index 6326d98461e..07d83b8d850 100644 --- a/app/helpers/sidekiq_helper.rb +++ b/app/helpers/sidekiq_helper.rb @@ -5,7 +5,7 @@ module SidekiqHelper (?\d+)\s+ (?[\d\.,]+)\s+ (?[\d\.,]+)\s+ - (?[DIEKNRSTVWXZNLpsl\+<>/\d]+)\s+ + (?[DIEKNRSTVWXZLpsl\+<>/\d]+)\s+ (?.+?)\s+ (?(?:ruby\d+:\s+)?sidekiq.*\].*) \z}x.freeze diff --git a/app/models/project.rb b/app/models/project.rb index c48360290c7..a73ca7d5bbb 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -2203,7 +2203,7 @@ class Project < ApplicationRecord end def reference_counter(type: Gitlab::GlRepository::PROJECT) - Gitlab::ReferenceCounter.new(type.identifier_for_subject(self)) + Gitlab::ReferenceCounter.new(type.identifier_for_repositorable(self)) end def badges diff --git a/app/models/project_services/pipelines_email_service.rb b/app/models/project_services/pipelines_email_service.rb index 8452239129d..65bf8535d2a 100644 --- a/app/models/project_services/pipelines_email_service.rb +++ b/app/models/project_services/pipelines_email_service.rb @@ -100,6 +100,6 @@ class PipelinesEmailService < Service end def retrieve_recipients(data) - recipients.to_s.split(/[,(?:\r?\n) ]+/).reject(&:empty?) + recipients.to_s.split(/[,\r\n ]+/).reject(&:empty?) end end diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb index f4666197def..3bec0c32c2c 100644 --- a/app/models/project_wiki.rb +++ b/app/models/project_wiki.rb @@ -65,7 +65,7 @@ class ProjectWiki # Returns the Gitlab::Git::Wiki object. def wiki @wiki ||= begin - gl_repository = Gitlab::GlRepository::WIKI.identifier_for_subject(project) + gl_repository = Gitlab::GlRepository::WIKI.identifier_for_repositorable(project) raw_repository = Gitlab::Git::Repository.new(project.repository_storage, disk_path + '.git', gl_repository, full_path) create_repo!(raw_repository) unless raw_repository.exists? diff --git a/app/models/repository.rb b/app/models/repository.rb index c53b2fc5340..a509315d94f 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -1177,7 +1177,7 @@ class Repository def initialize_raw_repository Gitlab::Git::Repository.new(project.repository_storage, disk_path + '.git', - repo_type.identifier_for_subject(project), + repo_type.identifier_for_repositorable(project), project.full_path) end end diff --git a/changelogs/unreleased/196861-improve-pipelines-copy.yml b/changelogs/unreleased/196861-improve-pipelines-copy.yml new file mode 100644 index 00000000000..b96cc50549e --- /dev/null +++ b/changelogs/unreleased/196861-improve-pipelines-copy.yml @@ -0,0 +1,5 @@ +--- +title: Update pipeline status copy in deploy footer +merge_request: 23199 +author: +type: changed diff --git a/changelogs/unreleased/9425-gitlab-npm-registry-to-support-npm-tags.yml b/changelogs/unreleased/9425-gitlab-npm-registry-to-support-npm-tags.yml new file mode 100644 index 00000000000..924478d3f8a --- /dev/null +++ b/changelogs/unreleased/9425-gitlab-npm-registry-to-support-npm-tags.yml @@ -0,0 +1,5 @@ +--- +title: NPM dist tags will now be displayed on the package details page. +merge_request: 23061 +author: +type: added diff --git a/changelogs/unreleased/sh-add-missing-backtrace-define.yml b/changelogs/unreleased/sh-add-missing-backtrace-define.yml new file mode 100644 index 00000000000..fd07321d012 --- /dev/null +++ b/changelogs/unreleased/sh-add-missing-backtrace-define.yml @@ -0,0 +1,5 @@ +--- +title: Fix Bitbucket Server importer error handler +merge_request: 23310 +author: +type: fixed diff --git a/config/environments/test.rb b/config/environments/test.rb index 153d16e4e55..d8235c6220c 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -10,11 +10,8 @@ Rails.application.configure do # your test database is "scratch space" for the test suite and is wiped # and recreated between test runs. Don't rely on the data there! - # Enabling caching of classes slows start-up time because all controllers - # are loaded at initialization, but it reduces memory and load because files - # are not reloaded with every request. For example, caching is not necessary - # for loading database migrations but useful for handling Knapsack specs. - config.cache_classes = ENV['CACHE_CLASSES'] == 'true' + # Code doesn't change in CI so we don't need code-reloading + config.cache_classes = !!ENV['CI'] # Configure static asset server for tests with Cache-Control for performance config.assets.compile = false if ENV['CI'] diff --git a/doc/install/aws/index.md b/doc/install/aws/index.md index a3b9124a2ba..6a261091031 100644 --- a/doc/install/aws/index.md +++ b/doc/install/aws/index.md @@ -238,32 +238,7 @@ Now, it's time to create the database: auto updates to minor versions. You may want to turn it off. 1. When done, click **Create database**. -### Installing the `pg_trgm` extension for PostgreSQL - -Once the database is created, connect to your new RDS instance to verify access -and to install a required extension. - -You can find the host or endpoint by selecting the instance you just created and -after the details dropdown menu you'll find it labeled as 'Endpoint'. Do not to -include the colon and port number: - -```sh -sudo /opt/gitlab/embedded/bin/psql -U gitlab -h -d gitlabhq_production -``` - -At the psql prompt create the extension and then quit the session: - -```sh -psql (9.4.7) -Type "help" for help. - -gitlab=# CREATE EXTENSION pg_trgm; -gitlab=# \q -``` - ---- - -Now that the database is created, let's move on setting up Redis with ElasticCache. +Now that the database is created, let's move on to setting up Redis with ElasticCache. ## Redis with ElastiCache @@ -435,15 +410,32 @@ we intended. After a few minutes, the instances should be up and accessible via the internet. Let's connect to the primary and configure some things before logging in. -### Configuring GitLab to connect with postgres and Redis +### Installing the `pg_trgm` extension for PostgreSQL -While connected to your server, let's connect to the RDS instance to verify -access and to install a required extension: +Connect to the RDS instance to verify access and to install the required `pg_trgm` extension. + +To find the host or endpoint, naviagate to **Amazon RDS > Databases** and click on the database you created earlier. Look for the endpoint under the **Connectivity & security** tab. + +Do not to include the colon and port number: ```sh sudo /opt/gitlab/embedded/bin/psql -U gitlab -h -d gitlabhq_production ``` +At the psql prompt create the extension and then quit the session: + +```sh +psql (10.9) +Type "help" for help. + +gitlab=# CREATE EXTENSION pg_trgm; +gitlab=# \q +``` + +--- + +### Configuring GitLab to connect with postgres and Redis + Edit the `gitlab.rb` file at `/etc/gitlab/gitlab.rb` find the `external_url 'http://gitlab.example.com'` option and change it to the domain you will be using or the public IP address of the current diff --git a/lib/api/helpers/internal_helpers.rb b/lib/api/helpers/internal_helpers.rb index cc4a0d348a0..c8e96c7c5db 100644 --- a/lib/api/helpers/internal_helpers.rb +++ b/lib/api/helpers/internal_helpers.rb @@ -118,7 +118,7 @@ module API # Project id to pass between components that don't share/don't have # access to the same filesystem mounts def gl_repository - repo_type.identifier_for_subject(project) + repo_type.identifier_for_repositorable(project) end def gl_project_path diff --git a/lib/gitlab/bitbucket_server_import/importer.rb b/lib/gitlab/bitbucket_server_import/importer.rb index 886fbaaff48..16fe5b46b1f 100644 --- a/lib/gitlab/bitbucket_server_import/importer.rb +++ b/lib/gitlab/bitbucket_server_import/importer.rb @@ -172,6 +172,7 @@ module Gitlab stage: 'import_pull_requests', iid: pull_request.iid, error: e.message ) + backtrace = Gitlab::BacktraceCleaner.clean_backtrace(e.backtrace) errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw } end end diff --git a/lib/gitlab/gl_repository/repo_type.rb b/lib/gitlab/gl_repository/repo_type.rb index 01bc27f963b..6918344aa40 100644 --- a/lib/gitlab/gl_repository/repo_type.rb +++ b/lib/gitlab/gl_repository/repo_type.rb @@ -13,8 +13,8 @@ module Gitlab @repository_accessor = repository_accessor end - def identifier_for_subject(subject) - "#{name}-#{subject.id}" + def identifier_for_repositorable(repositorable) + "#{name}-#{repositorable.id}" end def fetch_id(identifier) @@ -34,8 +34,8 @@ module Gitlab project? ? "" : ".#{name}" end - def repository_for(subject) - repository_accessor.call(subject) + def repository_for(repositorable) + repository_accessor.call(repositorable) end end end diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb index 48eaf073e8a..fd6e24a96d8 100644 --- a/lib/gitlab/regex.rb +++ b/lib/gitlab/regex.rb @@ -5,6 +5,9 @@ module Gitlab extend self def project_name_regex + # The character range \p{Alnum} overlaps with \u{00A9}-\u{1f9ff} + # hence the Ruby warning. + # https://gitlab.com/gitlab-org/gitlab/merge_requests/23165#not-easy-fixable @project_name_regex ||= /\A[\p{Alnum}\u{00A9}-\u{1f9ff}_][\p{Alnum}\p{Pd}\u{00A9}-\u{1f9ff}_\. ]*\z/.freeze end diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb index 29450a33289..e377c690d51 100644 --- a/lib/gitlab/workhorse.rb +++ b/lib/gitlab/workhorse.rb @@ -24,7 +24,7 @@ module Gitlab attrs = { GL_ID: Gitlab::GlId.gl_id(user), - GL_REPOSITORY: repo_type.identifier_for_subject(repository.project), + GL_REPOSITORY: repo_type.identifier_for_repositorable(repository.project), GL_USERNAME: user&.username, ShowAllRefs: show_all_refs, Repository: repository.gitaly_repository.to_h, diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 3a784cd552e..ab01af440ac 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -173,6 +173,11 @@ msgid_plural "%d staged changes" msgstr[0] "" msgstr[1] "" +msgid "%d tag" +msgid_plural "%d tags" +msgstr[0] "" +msgstr[1] "" + msgid "%d unstaged change" msgid_plural "%d unstaged changes" msgstr[0] "" @@ -3081,7 +3086,7 @@ msgstr "" msgid "Callback URL" msgstr "" -msgid "Can deploy manually to" +msgid "Can be manually deployed to" msgstr "" msgid "Can override approvers and approvals required per merge request" @@ -3114,7 +3119,7 @@ msgstr "" msgid "Cancel this job" msgstr "" -msgid "Canceled deploy to" +msgid "Canceled deployment to" msgstr "" msgid "Cancelling Preview" diff --git a/package.json b/package.json index 6bbb284b434..df3c28ada2a 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "core-js": "^3.2.1", "cropper": "^2.3.0", "css-loader": "^1.0.0", - "d3": "^5.12.0", + "d3": "^4.13.0", "d3-scale": "^1.0.7", "d3-selection": "^1.2.0", "dateformat": "^3.0.3", diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh index 1c75958aef1..23e76980926 100644 --- a/scripts/rspec_helpers.sh +++ b/scripts/rspec_helpers.sh @@ -40,7 +40,6 @@ function rspec_simple_job() { local rspec_opts="${1}" export NO_KNAPSACK="1" - export CACHE_CLASSES="true" scripts/gitaly-test-spawn @@ -59,7 +58,6 @@ function rspec_paralellized_job() { spec_folder_prefix="ee/" fi - export CACHE_CLASSES="true" export KNAPSACK_LOG_LEVEL="debug" export KNAPSACK_REPORT_PATH="knapsack/${test_tool}_${test_level}_${database}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json" diff --git a/spec/features/merge_request/user_sees_deployment_widget_spec.rb b/spec/features/merge_request/user_sees_deployment_widget_spec.rb index 99c9e9dc501..3b599fcacb1 100644 --- a/spec/features/merge_request/user_sees_deployment_widget_spec.rb +++ b/spec/features/merge_request/user_sees_deployment_widget_spec.rb @@ -96,7 +96,7 @@ describe 'Merge request > User sees deployment widget', :js do visit project_merge_request_path(project, merge_request) wait_for_requests - expect(page).to have_content("Canceled deploy to #{environment.name}") + expect(page).to have_content("Canceled deployment to #{environment.name}") expect(page).not_to have_css('.js-deploy-time') end end diff --git a/spec/frontend/vue_mr_widget/deployment/deployment_spec.js b/spec/frontend/vue_mr_widget/deployment/deployment_spec.js index 2902c8280dd..ec7be6b64fc 100644 --- a/spec/frontend/vue_mr_widget/deployment/deployment_spec.js +++ b/spec/frontend/vue_mr_widget/deployment/deployment_spec.js @@ -56,27 +56,27 @@ describe('Deployment component', () => { const deployGroup = [DeploymentViewButton, DeploymentStopButton]; describe.each` - status | previous | deploymentDetails | text | actionButtons - ${CREATED} | ${true} | ${deployDetail} | ${'Can deploy manually to'} | ${deployGroup} - ${CREATED} | ${true} | ${noDetails} | ${'Will deploy to'} | ${deployGroup} - ${CREATED} | ${false} | ${deployDetail} | ${'Can deploy manually to'} | ${noActions} - ${CREATED} | ${false} | ${noDetails} | ${'Will deploy to'} | ${noActions} - ${RUNNING} | ${true} | ${deployDetail} | ${'Deploying to'} | ${deployGroup} - ${RUNNING} | ${true} | ${noDetails} | ${'Deploying to'} | ${deployGroup} - ${RUNNING} | ${false} | ${deployDetail} | ${'Deploying to'} | ${noActions} - ${RUNNING} | ${false} | ${noDetails} | ${'Deploying to'} | ${noActions} - ${SUCCESS} | ${true} | ${deployDetail} | ${'Deployed to'} | ${deployGroup} - ${SUCCESS} | ${true} | ${noDetails} | ${'Deployed to'} | ${deployGroup} - ${SUCCESS} | ${false} | ${deployDetail} | ${'Deployed to'} | ${deployGroup} - ${SUCCESS} | ${false} | ${noDetails} | ${'Deployed to'} | ${deployGroup} - ${FAILED} | ${true} | ${deployDetail} | ${'Failed to deploy to'} | ${deployGroup} - ${FAILED} | ${true} | ${noDetails} | ${'Failed to deploy to'} | ${deployGroup} - ${FAILED} | ${false} | ${deployDetail} | ${'Failed to deploy to'} | ${noActions} - ${FAILED} | ${false} | ${noDetails} | ${'Failed to deploy to'} | ${noActions} - ${CANCELED} | ${true} | ${deployDetail} | ${'Canceled deploy to'} | ${deployGroup} - ${CANCELED} | ${true} | ${noDetails} | ${'Canceled deploy to'} | ${deployGroup} - ${CANCELED} | ${false} | ${deployDetail} | ${'Canceled deploy to'} | ${noActions} - ${CANCELED} | ${false} | ${noDetails} | ${'Canceled deploy to'} | ${noActions} + status | previous | deploymentDetails | text | actionButtons + ${CREATED} | ${true} | ${deployDetail} | ${'Can be manually deployed to'} | ${deployGroup} + ${CREATED} | ${true} | ${noDetails} | ${'Will deploy to'} | ${deployGroup} + ${CREATED} | ${false} | ${deployDetail} | ${'Can be manually deployed to'} | ${noActions} + ${CREATED} | ${false} | ${noDetails} | ${'Will deploy to'} | ${noActions} + ${RUNNING} | ${true} | ${deployDetail} | ${'Deploying to'} | ${deployGroup} + ${RUNNING} | ${true} | ${noDetails} | ${'Deploying to'} | ${deployGroup} + ${RUNNING} | ${false} | ${deployDetail} | ${'Deploying to'} | ${noActions} + ${RUNNING} | ${false} | ${noDetails} | ${'Deploying to'} | ${noActions} + ${SUCCESS} | ${true} | ${deployDetail} | ${'Deployed to'} | ${deployGroup} + ${SUCCESS} | ${true} | ${noDetails} | ${'Deployed to'} | ${deployGroup} + ${SUCCESS} | ${false} | ${deployDetail} | ${'Deployed to'} | ${deployGroup} + ${SUCCESS} | ${false} | ${noDetails} | ${'Deployed to'} | ${deployGroup} + ${FAILED} | ${true} | ${deployDetail} | ${'Failed to deploy to'} | ${deployGroup} + ${FAILED} | ${true} | ${noDetails} | ${'Failed to deploy to'} | ${deployGroup} + ${FAILED} | ${false} | ${deployDetail} | ${'Failed to deploy to'} | ${noActions} + ${FAILED} | ${false} | ${noDetails} | ${'Failed to deploy to'} | ${noActions} + ${CANCELED} | ${true} | ${deployDetail} | ${'Canceled deployment to'} | ${deployGroup} + ${CANCELED} | ${true} | ${noDetails} | ${'Canceled deployment to'} | ${deployGroup} + ${CANCELED} | ${false} | ${deployDetail} | ${'Canceled deployment to'} | ${noActions} + ${CANCELED} | ${false} | ${noDetails} | ${'Canceled deployment to'} | ${noActions} `( '$status + previous: $previous + manual: $deploymentDetails.isManual', ({ status, previous, deploymentDetails, text, actionButtons }) => { diff --git a/spec/lib/gitlab/bitbucket_server_import/importer_spec.rb b/spec/lib/gitlab/bitbucket_server_import/importer_spec.rb index 8ab7b2c5fa7..cf39d2cb753 100644 --- a/spec/lib/gitlab/bitbucket_server_import/importer_spec.rb +++ b/spec/lib/gitlab/bitbucket_server_import/importer_spec.rb @@ -67,6 +67,7 @@ describe Gitlab::BitbucketServerImport::Importer do author_email: project.owner.email, created_at: Time.now, updated_at: Time.now, + raw: {}, merged?: true) allow(subject.client).to receive(:pull_requests).and_return([pull_request]) @@ -239,6 +240,13 @@ describe Gitlab::BitbucketServerImport::Importer do expect(notes.first.note).to start_with('*Comment on .gitmodules') expect(notes.second.note).to start_with('*Comment on .gitmodules') end + + it 'reports an error if an exception is raised' do + allow(subject).to receive(:import_bitbucket_pull_request).and_raise(RuntimeError) + expect(Gitlab::ErrorTracking).to receive(:log_exception) + + subject.execute + end end describe 'inaccessible branches' do diff --git a/spec/models/project_services/pipelines_email_service_spec.rb b/spec/models/project_services/pipelines_email_service_spec.rb index 67358d6c3d6..f29414c80c9 100644 --- a/spec/models/project_services/pipelines_email_service_spec.rb +++ b/spec/models/project_services/pipelines_email_service_spec.rb @@ -305,8 +305,8 @@ describe PipelinesEmailService, :mailer do end context 'with recipients list separating with newlines' do - let(:recipients) { "\ntest@gitlab.com, \r\nexample@gitlab.com" } - let(:receivers) { %w[test@gitlab.com example@gitlab.com] } + let(:recipients) { "\ntest@gitlab.com, \r\nexample@gitlab.com\rother@gitlab.com" } + let(:receivers) { %w[test@gitlab.com example@gitlab.com other@gitlab.com] } context 'with failed pipeline' do before do diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index c57f47b5738..0b39cfa1243 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -3992,7 +3992,7 @@ describe Project do end it 'schedules HashedStorage::ProjectMigrateWorker with delayed start when the project repo is in use' do - Gitlab::ReferenceCounter.new(Gitlab::GlRepository::PROJECT.identifier_for_subject(project)).increase + Gitlab::ReferenceCounter.new(Gitlab::GlRepository::PROJECT.identifier_for_repositorable(project)).increase expect(HashedStorage::ProjectMigrateWorker).to receive(:perform_in) @@ -4000,7 +4000,7 @@ describe Project do end it 'schedules HashedStorage::ProjectMigrateWorker with delayed start when the wiki repo is in use' do - Gitlab::ReferenceCounter.new(Gitlab::GlRepository::WIKI.identifier_for_subject(project)).increase + Gitlab::ReferenceCounter.new(Gitlab::GlRepository::WIKI.identifier_for_repositorable(project)).increase expect(HashedStorage::ProjectMigrateWorker).to receive(:perform_in) diff --git a/spec/requests/api/internal/base_spec.rb b/spec/requests/api/internal/base_spec.rb index 12e6e7c7a09..01a5930f8fb 100644 --- a/spec/requests/api/internal/base_spec.rb +++ b/spec/requests/api/internal/base_spec.rb @@ -268,7 +268,7 @@ describe API::Internal::Base do end context 'with env passed as a JSON' do - let(:gl_repository) { Gitlab::GlRepository::WIKI.identifier_for_subject(project) } + let(:gl_repository) { Gitlab::GlRepository::WIKI.identifier_for_repositorable(project) } it 'sets env in RequestStore' do obj_dir_relative = './objects' @@ -1054,9 +1054,9 @@ describe API::Internal::Base do def gl_repository_for(project_or_wiki) case project_or_wiki when ProjectWiki - Gitlab::GlRepository::WIKI.identifier_for_subject(project_or_wiki.project) + Gitlab::GlRepository::WIKI.identifier_for_repositorable(project_or_wiki.project) when Project - Gitlab::GlRepository::PROJECT.identifier_for_subject(project_or_wiki) + Gitlab::GlRepository::PROJECT.identifier_for_repositorable(project_or_wiki) else nil end diff --git a/spec/support/shared_examples/repo_type_shared_examples.rb b/spec/support/shared_examples/repo_type_shared_examples.rb index dc9e3a73346..e4f277650e5 100644 --- a/spec/support/shared_examples/repo_type_shared_examples.rb +++ b/spec/support/shared_examples/repo_type_shared_examples.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true shared_examples 'a repo type' do - describe "#identifier_for_subject" do - subject { described_class.identifier_for_subject(project) } + describe "#identifier_for_repositorable" do + subject { described_class.identifier_for_repositorable(project) } it { is_expected.to eq(expected_identifier) } end diff --git a/yarn.lock b/yarn.lock index 559c9659f42..a4c4890fc4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3238,17 +3238,17 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= -d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: +d3-array@1, d3-array@1.2.1, d3-array@^1.1.1, d3-array@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw== -d3-axis@1: +d3-axis@1, d3-axis@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa" integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo= -d3-brush@1: +d3-brush@1, d3-brush@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4" integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q= @@ -3259,7 +3259,7 @@ d3-brush@1: d3-selection "1" d3-transition "1" -d3-chord@1: +d3-chord@1, d3-chord@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz#7dec4f0ba886f713fe111c45f763414f6f74ca2c" integrity sha1-fexPC6iG9xP+ERxF92NBT290yiw= @@ -3267,12 +3267,12 @@ d3-chord@1: d3-array "1" d3-path "1" -d3-collection@1: +d3-collection@1, d3-collection@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2" integrity sha1-NC39EoN8kJdPM/HMCnha6lcNzcI= -d3-color@1: +d3-color@1, d3-color@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b" integrity sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs= @@ -3284,12 +3284,12 @@ d3-contour@1: dependencies: d3-array "^1.1.1" -d3-dispatch@1: +d3-dispatch@1, d3-dispatch@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8" integrity sha1-RuFJHqqbWMNY/OW+TovtYm54cfg= -d3-drag@1: +d3-drag@1, d3-drag@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz#df8dd4c502fb490fc7462046a8ad98a5c479282d" integrity sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ== @@ -3297,7 +3297,7 @@ d3-drag@1: d3-dispatch "1" d3-selection "1" -d3-dsv@1: +d3-dsv@1, d3-dsv@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.8.tgz#907e240d57b386618dc56468bacfe76bf19764ae" integrity sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A== @@ -3306,7 +3306,7 @@ d3-dsv@1: iconv-lite "0.4" rw "1" -d3-ease@1: +d3-ease@1, d3-ease@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4= @@ -3318,7 +3318,7 @@ d3-fetch@1: dependencies: d3-dsv "1" -d3-force@1: +d3-force@1, d3-force@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz#cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3" integrity sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg== @@ -3328,50 +3328,65 @@ d3-force@1: d3-quadtree "1" d3-timer "1" -d3-format@1: +d3-format@1, d3-format@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.2.tgz#1a39c479c8a57fe5051b2e67a3bee27061a74e7a" integrity sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw== -d3-geo@1: +d3-geo@1, d3-geo@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.9.1.tgz#157e3b0f917379d0f73bebfff3be537f49fa7356" integrity sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA== dependencies: d3-array "1" -d3-hierarchy@1: +d3-hierarchy@1, d3-hierarchy@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26" integrity sha1-ochFxC+Eoga88cAcAQmOpN2qeiY= -d3-interpolate@1: +d3-interpolate@1, d3-interpolate@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== dependencies: d3-color "1" -d3-path@1: +d3-path@1, d3-path@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764" integrity sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q= -d3-polygon@1: +d3-polygon@1, d3-polygon@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz#16888e9026460933f2b179652ad378224d382c62" integrity sha1-FoiOkCZGCTPysXllKtN4Ik04LGI= -d3-quadtree@1: +d3-quadtree@1, d3-quadtree@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz#ac7987e3e23fe805a990f28e1b50d38fcb822438" integrity sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg= -d3-random@1: +d3-queue@3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/d3-queue/-/d3-queue-3.0.7.tgz#c93a2e54b417c0959129d7d73f6cf7d4292e7618" + integrity sha1-yTouVLQXwJWRKdfXP2z31Ckudhg= + +d3-random@1, d3-random@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz#6642e506c6fa3a648595d2b2469788a8d12529d3" integrity sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM= +d3-request@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-request/-/d3-request-1.0.6.tgz#a1044a9ef4ec28c824171c9379fae6d79474b19f" + integrity sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w== + dependencies: + d3-collection "1" + d3-dispatch "1" + d3-dsv "1" + xmlhttprequest "1" + d3-scale-chromatic@1: version "1.3.3" resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz#dad4366f0edcb288f490128979c3c793583ed3c0" @@ -3380,6 +3395,19 @@ d3-scale-chromatic@1: d3-color "1" d3-interpolate "1" +d3-scale@1.0.7, d3-scale@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" + integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-color "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + d3-scale@2: version "2.2.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" @@ -3392,49 +3420,36 @@ d3-scale@2: d3-time "1" d3-time-format "2" -d3-scale@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" - integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-color "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-selection@1, d3-selection@^1.1.0, d3-selection@^1.2.0: +d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0, d3-selection@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d" integrity sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA== -d3-shape@1: +d3-shape@1, d3-shape@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777" integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c= dependencies: d3-path "1" -d3-time-format@2: +d3-time-format@2, d3-time-format@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31" integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw== dependencies: d3-time "1" -d3-time@1: +d3-time@1, d3-time@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84" integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ== -d3-timer@1: +d3-timer@1, d3-timer@1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531" integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA== -d3-transition@1: +d3-transition@1, d3-transition@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039" integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ== @@ -3446,12 +3461,12 @@ d3-transition@1: d3-selection "^1.1.0" d3-timer "1" -d3-voronoi@1: +d3-voronoi@1, d3-voronoi@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c" integrity sha1-Fodmfo8TotFYyAwUgMWinLDYlzw= -d3-zoom@1: +d3-zoom@1, d3-zoom@1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.1.tgz#02f43b3c3e2db54f364582d7e4a236ccc5506b63" integrity sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ== @@ -3462,7 +3477,43 @@ d3-zoom@1: d3-selection "1" d3-transition "1" -d3@^5.12.0, d3@^5.14, d3@^5.7.0: +d3@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-4.13.0.tgz#ab236ff8cf0cfc27a81e69bf2fb7518bc9b4f33d" + integrity sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ== + dependencies: + d3-array "1.2.1" + d3-axis "1.0.8" + d3-brush "1.0.4" + d3-chord "1.0.4" + d3-collection "1.0.4" + d3-color "1.0.3" + d3-dispatch "1.0.3" + d3-drag "1.2.1" + d3-dsv "1.0.8" + d3-ease "1.0.3" + d3-force "1.1.0" + d3-format "1.2.2" + d3-geo "1.9.1" + d3-hierarchy "1.1.5" + d3-interpolate "1.1.6" + d3-path "1.0.5" + d3-polygon "1.0.3" + d3-quadtree "1.0.3" + d3-queue "3.0.7" + d3-random "1.1.0" + d3-request "1.0.6" + d3-scale "1.0.7" + d3-selection "1.3.0" + d3-shape "1.2.0" + d3-time "1.0.8" + d3-time-format "2.1.1" + d3-timer "1.0.7" + d3-transition "1.1.1" + d3-voronoi "1.1.2" + d3-zoom "1.7.1" + +d3@^5.14, d3@^5.7.0: version "5.15.0" resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== @@ -12095,6 +12146,11 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +xmlhttprequest@1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"