diff options
author | Clement Ho <clemmakesapps@gmail.com> | 2017-08-15 14:25:08 +0000 |
---|---|---|
committer | Clement Ho <clemmakesapps@gmail.com> | 2017-08-15 14:25:08 +0000 |
commit | 35659da185e3c6ec2862884b4e9e19dd20445957 (patch) | |
tree | 4ce78341a0a0ea1c14249d41f70a060a5d39cc22 /app/models/merge_request.rb | |
parent | 1405bf844831bbaf8a7ffb1c516906b858bfdbb6 (diff) | |
parent | fe09c25d68a61c5874e9beb0f018c05a4d789d70 (diff) | |
download | gitlab-ce-fix-btn-alignment.tar.gz |
Merge branch 'master' into 'fix-btn-alignment'fix-btn-alignment
# Conflicts:
# app/views/projects/merge_requests/_nav_btns.html.haml
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 |