diff options
author | Saverio Miroddi <saverio.pub2@gmail.com> | 2017-08-15 18:49:28 +0200 |
---|---|---|
committer | Saverio Miroddi <saverio.pub2@gmail.com> | 2017-08-15 18:49:28 +0200 |
commit | cd80a9075f5f2b3150c909a6cd56e7c8f239bd51 (patch) | |
tree | 58f0fba91c72ec86cc744f026d62d06050b20efa /app/models/merge_request.rb | |
parent | 1d6ba597028142511af8c9863f81073278ccd927 (diff) | |
parent | 97b768508c360d2ae767a559b5037fe464061440 (diff) | |
download | gitlab-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.rb | 22 |
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 |