diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 85dce768cf3..0af60645545 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -183,7 +183,7 @@ class MergeRequest < ActiveRecord::Base def diff_base_commit if merge_request_diff merge_request_diff.base_commit - else + elsif source_sha self.target_project.merge_base_commit(self.source_sha, self.target_branch) end end @@ -489,7 +489,7 @@ class MergeRequest < ActiveRecord::Base end def source_sha - last_commit.sha + last_commit.try(:sha) end def fetch_ref diff --git a/app/models/project.rb b/app/models/project.rb index 488dc98c17f..238932f59a7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -349,7 +349,8 @@ class Project < ActiveRecord::Base end def merge_base_commit(first_commit_id, second_commit_id) - repository.commit(repository.merge_base(first_commit_id, second_commit_id)) + sha = repository.merge_base(first_commit_id, second_commit_id) + repository.commit(sha) if sha end def saved? diff --git a/app/models/repository.rb b/app/models/repository.rb index 6c1ee4b29cd..130daddd9d1 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -589,6 +589,8 @@ class Repository def merge_base(first_commit_id, second_commit_id) rugged.merge_base(first_commit_id, second_commit_id) + rescue Rugged::ReferenceError + nil end def is_ancestor?(ancestor_id, descendant_id) diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb index d30bc7d0554..606340d87e4 100644 --- a/spec/models/build_spec.rb +++ b/spec/models/build_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Ci::Build, models: true do - let(:project) { FactoryGirl.create :empty_project } + let(:project) { FactoryGirl.create :project } let(:commit) { FactoryGirl.create :ci_commit, project: project } let(:build) { FactoryGirl.create :ci_build, commit: commit }