Merge branch 'fix/import-export-gitlab-errors' into 'master'

Fix errors found on importing GitLab CE repo

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/18968

See merge request !4855
This commit is contained in:
Rémy Coutable 2016-06-23 14:13:17 +00:00
commit 6f6dcc366b
5 changed files with 48 additions and 1 deletions

View File

@ -6,6 +6,9 @@ v 8.10.0 (unreleased)
- Fix MR-auto-close text added to description. !4836
- Implement Subresource Integrity for CSS and JavaScript assets. This prevents malicious assets from loading in the case of a CDN compromise.
v 8.9.1
- Fix GitLab project import issues related to notes and builds
v 8.9.0
- Fix builds API response not including commit data
- Fix error when CI job variables key specified but not defined

View File

@ -170,6 +170,19 @@ module Ci
builds.where.not(environment: nil).success.pluck(:environment).uniq
end
# Manually set the notes for a Ci::Pipeline
# There is no ActiveRecord relation between Ci::Pipeline and notes
# as they are related to a commit sha. This method helps importing
# them using the +Gitlab::ImportExport::RelationFactory+ class.
def notes=(notes)
notes.each do |note|
note[:id] = nil
note[:commit_id] = sha
note[:noteable_id] = self['id']
note.save!
end
end
def notes
Note.for_commit_id(sha)
end

View File

@ -12,6 +12,8 @@ module Gitlab
USER_REFERENCES = %w[author_id assignee_id updated_by_id user_id].freeze
BUILD_MODELS = %w[Ci::Build commit_status].freeze
def self.create(*args)
new(*args).create
end
@ -70,7 +72,7 @@ module Gitlab
end
def generate_imported_object
if @relation_sym == 'commit_status' # call #trace= method after assigning the other attributes
if BUILD_MODELS.include?(@relation_name) # call #trace= method after assigning the other attributes
trace = @relation_hash.delete('trace')
imported_object do |object|
object.trace = trace

View File

@ -4894,6 +4894,29 @@
"started_at": null,
"finished_at": null,
"duration": null,
"notes": [
{
"id": 999,
"note": "Natus rerum qui dolorem dolorum voluptas.",
"noteable_type": "Commit",
"author_id": 1,
"created_at": "2016-03-22T15:19:59.469Z",
"updated_at": "2016-03-22T15:19:59.469Z",
"project_id": 5,
"attachment": {
"url": null
},
"line_code": null,
"commit_id": "be93687618e4b132087f430a4d8fc3a609c9b77c",
"noteable_id": 36,
"system": false,
"st_diff": null,
"updated_by_id": null,
"author": {
"name": "Administrator"
}
}
],
"statuses": [
{
"id": 71,

View File

@ -18,6 +18,12 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
it 'restores models based on JSON' do
expect(restored_project_json).to be true
end
it 'creates a valid pipeline note' do
restored_project_json
expect(Ci::Pipeline.first.notes).not_to be_empty
end
end
end
end