summaryrefslogtreecommitdiff
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorSaverio Miroddi <saverio.pub2@gmail.com>2017-08-15 18:49:28 +0200
committerSaverio Miroddi <saverio.pub2@gmail.com>2017-08-15 18:49:28 +0200
commitcd80a9075f5f2b3150c909a6cd56e7c8f239bd51 (patch)
tree58f0fba91c72ec86cc744f026d62d06050b20efa /app/models/merge_request.rb
parent1d6ba597028142511af8c9863f81073278ccd927 (diff)
parent97b768508c360d2ae767a559b5037fe464061440 (diff)
downloadgitlab-ce-cd80a9075f5f2b3150c909a6cd56e7c8f239bd51.tar.gz
Merge branch 'master' into sm-cherry-pick-list-commits-in-message
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb22
1 files changed, 16 insertions, 6 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index f90194041b1..ac08dc0ee1f 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -443,7 +443,8 @@ class MergeRequest < ActiveRecord::Base
end
def reload_diff_if_branch_changed
- if source_branch_changed? || target_branch_changed?
+ if (source_branch_changed? || target_branch_changed?) &&
+ (source_branch_head && target_branch_head)
reload_diff
end
end
@@ -792,11 +793,7 @@ class MergeRequest < ActiveRecord::Base
end
def fetch_ref
- target_project.repository.fetch_ref(
- source_project.repository.path_to_repo,
- "refs/heads/#{source_branch}",
- ref_path
- )
+ write_ref
update_column(:ref_fetched, true)
end
@@ -939,4 +936,17 @@ class MergeRequest < ActiveRecord::Base
true
end
+
+ private
+
+ def write_ref
+ target_project.repository.with_repo_branch_commit(
+ source_project.repository, source_branch) do |commit|
+ if commit
+ target_project.repository.write_ref(ref_path, commit.sha)
+ else
+ raise Rugged::ReferenceError, 'source repository is empty'
+ end
+ end
+ end
end