Commit 94644565 authored by Douwe Maan's avatar Douwe Maan
Browse files

Merge branch 'pull-mirror-overhaul-ce-backport' into 'master'

backports changed import logic from pull mirroring feature into CE

See merge request !11850
parents 38b3064c 810866ec
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@
              if (job.import_status === 'finished') {
                job_item.removeClass("active").addClass("success");
                return status_field.html('<span><i class="fa fa-check"></i> done</span>');
              } else if (job.import_status === 'scheduled') {
                return status_field.html("<i class='fa fa-spinner fa-spin'></i> scheduled");
              } else if (job.import_status === 'started') {
                return status_field.html("<i class='fa fa-spinner fa-spin'></i> started");
              } else {
+1 −8
Original line number Diff line number Diff line
@@ -14,14 +14,7 @@ def create
    @project.import_url = params[:project][:import_url]

    if @project.save
      @project.reload

      if @project.import_failed?
        @project.import_retry
      else
        @project.import_start
        @project.add_import_job
      end
      @project.reload.import_schedule
    end

    redirect_to namespace_project_import_path(@project.namespace, @project)
+1 −5
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ def self.ensure_cache_setup
    ApplicationSetting.define_attribute_methods
  end

  def self.defaults_ce
  def self.defaults
    {
      after_sign_up_text: nil,
      akismet_enabled: false,
@@ -250,10 +250,6 @@ def self.defaults_ce
    }
  end

  def self.defaults
    defaults_ce
  end

  def self.create_from_defaults
    create(defaults)
  end
+25 −4
Original line number Diff line number Diff line
@@ -165,7 +165,7 @@ def update_forks_visibility_level
  has_many :todos, dependent: :destroy
  has_many :notification_settings, dependent: :destroy, as: :source

  has_one :import_data, dependent: :destroy, class_name: "ProjectImportData"
  has_one :import_data, dependent: :delete, class_name: "ProjectImportData"
  has_one :project_feature, dependent: :destroy
  has_one :statistics, class_name: 'ProjectStatistics', dependent: :delete
  has_many :container_repositories, dependent: :destroy
@@ -298,8 +298,16 @@ def self.with_feature_available_for_user(feature, user)
  scope :excluding_project, ->(project) { where.not(id: project) }

  state_machine :import_status, initial: :none do
    event :import_schedule do
      transition [:none, :finished, :failed] => :scheduled
    end

    event :force_import_start do
      transition [:none, :finished, :failed] => :started
    end

    event :import_start do
      transition [:none, :finished] => :started
      transition scheduled: :started
    end

    event :import_finish do
@@ -307,18 +315,23 @@ def self.with_feature_available_for_user(feature, user)
    end

    event :import_fail do
      transition started: :failed
      transition [:scheduled, :started] => :failed
    end

    event :import_retry do
      transition failed: :started
    end

    state :scheduled
    state :started
    state :finished
    state :failed

    after_transition any => :finished, do: :reset_cache_and_import_attrs
    after_transition [:none, :finished, :failed] => :scheduled do |project, _|
      project.run_after_commit { add_import_job }
    end

    after_transition started: :finished, do: :reset_cache_and_import_attrs
  end

  class << self
@@ -532,9 +545,17 @@ def imported?
  end

  def import_in_progress?
    import_started? || import_scheduled?
  end

  def import_started?
    import? && import_status == 'started'
  end

  def import_scheduled?
    import_status == 'scheduled'
  end

  def import_failed?
    import_status == 'failed'
  end
+2 −3
Original line number Diff line number Diff line
@@ -48,15 +48,14 @@ def execute

      save_project_and_import_data(import_data)

      @project.import_start if @project.import?

      after_create_actions if @project.persisted?

      if @project.errors.empty?
        @project.add_import_job if @project.import?
        @project.import_schedule if @project.import?
      else
        fail(error: @project.errors.full_messages.join(', '))
      end

      @project
    rescue ActiveRecord::RecordInvalid => e
      message = "Unable to save #{e.record.type}: #{e.record.errors.full_messages.join(", ")} "
Loading