Cleanup after adding MR diff's commit_count (try 2)
* processes any pending records which are not migrated yet * bumps import_export version because of new commits_count attribute * removes commits_count fallback method
This commit is contained in:
parent
e6f6f8e7a3
commit
5bb421ecbb
11 changed files with 63 additions and 7 deletions
|
@ -197,10 +197,6 @@ class MergeRequestDiff < ActiveRecord::Base
|
|||
CompareService.new(project, head_commit_sha).execute(project, sha, straight: true)
|
||||
end
|
||||
|
||||
def commits_count
|
||||
super || merge_request_diff_commits.size
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_merge_request_diff_files(diffs)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
class AssureCommitsCountForMergeRequestDiff < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
class MergeRequestDiff < ActiveRecord::Base
|
||||
self.table_name = 'merge_request_diffs'
|
||||
|
||||
include ::EachBatch
|
||||
end
|
||||
|
||||
def up
|
||||
Gitlab::BackgroundMigration.steal('AddMergeRequestDiffCommitsCount')
|
||||
|
||||
MergeRequestDiff.where(commits_count: nil).each_batch(of: 50) do |batch|
|
||||
range = batch.pluck('MIN(id)', 'MAX(id)').first
|
||||
|
||||
Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount.new.perform(*range)
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
# noop
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20180418053107) do
|
||||
ActiveRecord::Schema.define(version: 20180425131009) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
|
|
@ -31,7 +31,8 @@ with all their related data and be moved into a new GitLab instance.
|
|||
|
||||
| GitLab version | Import/Export version |
|
||||
| ---------------- | --------------------- |
|
||||
| 10.4 to current | 0.2.2 |
|
||||
| 10.8 to current | 0.2.3 |
|
||||
| 10.4 | 0.2.2 |
|
||||
| 10.3 | 0.2.1 |
|
||||
| 10.0 | 0.2.0 |
|
||||
| 9.4.0 | 0.1.8 |
|
||||
|
|
|
@ -3,7 +3,7 @@ module Gitlab
|
|||
extend self
|
||||
|
||||
# For every version update, the version history in import_export.md has to be kept up to date.
|
||||
VERSION = '0.2.2'.freeze
|
||||
VERSION = '0.2.3'.freeze
|
||||
FILENAME_LIMIT = 50
|
||||
|
||||
def export_path(relative_path:)
|
||||
|
|
Binary file not shown.
BIN
spec/fixtures/exported-project.gz
vendored
BIN
spec/fixtures/exported-project.gz
vendored
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
require 'spec_helper'
|
||||
require Rails.root.join('db', 'migrate', '20180425131009_assure_commits_count_for_merge_request_diff.rb')
|
||||
|
||||
describe AssureCommitsCountForMergeRequestDiff, :migration, :sidekiq, :redis do
|
||||
let(:migration) { spy('migration') }
|
||||
|
||||
before do
|
||||
allow(Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount)
|
||||
.to receive(:new).and_return(migration)
|
||||
end
|
||||
|
||||
context 'when there are still unmigrated commit_counts afterwards' do
|
||||
let(:namespaces) { table('namespaces') }
|
||||
let(:projects) { table('projects') }
|
||||
let(:merge_requests) { table('merge_requests') }
|
||||
let(:diffs) { table('merge_request_diffs') }
|
||||
|
||||
before do
|
||||
namespace = namespaces.create(name: 'foo', path: 'foo')
|
||||
project = projects.create!(namespace_id: namespace.id)
|
||||
merge_request = merge_requests.create!(source_branch: 'x', target_branch: 'y', target_project_id: project.id)
|
||||
diffs.create!(commits_count: nil, merge_request_id: merge_request.id)
|
||||
diffs.create!(commits_count: nil, merge_request_id: merge_request.id)
|
||||
end
|
||||
|
||||
it 'migrates commit_counts sequentially in batches' do
|
||||
migrate!
|
||||
|
||||
expect(migration).to have_received(:perform).once
|
||||
end
|
||||
end
|
||||
end
|
BIN
vendor/project_templates/express.tar.gz
vendored
BIN
vendor/project_templates/express.tar.gz
vendored
Binary file not shown.
BIN
vendor/project_templates/rails.tar.gz
vendored
BIN
vendor/project_templates/rails.tar.gz
vendored
Binary file not shown.
BIN
vendor/project_templates/spring.tar.gz
vendored
BIN
vendor/project_templates/spring.tar.gz
vendored
Binary file not shown.
Loading…
Reference in a new issue