summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-08-14 22:55:34 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-08-14 22:55:34 +0800
commitd7e95d77d845baf656d9be4e2cc077f7d426d7a8 (patch)
tree7b372305967fd925b04b8519d73cb0b01444e277 /app/models
parentd1b4770d6c4f287def26f1990654a00f0990ed65 (diff)
downloadgitlab-ce-d7e95d77d845baf656d9be4e2cc077f7d426d7a8.tar.gz
Use with_repo_branch_commit instead of fetch_ref directly
So that we could limit the access to Repository#fetch_ref See: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/13416#note_37487433
Diffstat (limited to 'app/models')
-rw-r--r--app/models/merge_request.rb17
1 files changed, 8 insertions, 9 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index daee7c93995..ac08dc0ee1f 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -940,14 +940,13 @@ class MergeRequest < ActiveRecord::Base
private
def write_ref
- if for_fork?
- target_project.repository.fetch_ref(
- source_project.repository.path_to_repo,
- "refs/heads/#{source_branch}",
- ref_path
- )
- else
- source_project.repository.write_ref(ref_path, source_branch_sha)
- end
+ 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