diff options
author | Rémy Coutable <remy@rymai.me> | 2017-08-08 15:16:54 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-08-08 15:16:54 +0000 |
commit | 143b5293b0e7f6fb4df64f5bc0b600d72aa6bbb1 (patch) | |
tree | 671c577e81471640d84d0d5dc1979ec3667c1e5f /app/models | |
parent | 6a6a1e5b9e0a82735f786ffedeacc7cbc33ed7cd (diff) | |
parent | 98535fc12cc381d562d916c4947a763511a828a7 (diff) | |
download | gitlab-ce-143b5293b0e7f6fb4df64f5bc0b600d72aa6bbb1.tar.gz |
Merge branch '36010-api-v4-allows-setting-a-branch-that-doesn-t-exist-as-the-default-one' into 'master'
Resolve "API v4 allows setting a branch that doesn't exist as the default one"
Closes #36010
See merge request !13359
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/project.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index e7baba2ef08..1575f38b2ea 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1046,13 +1046,18 @@ class Project < ActiveRecord::Base end def change_head(branch) - repository.before_change_head - repository.rugged.references.create('HEAD', - "refs/heads/#{branch}", - force: true) - repository.copy_gitattributes(branch) - repository.after_change_head - reload_default_branch + if repository.branch_exists?(branch) + repository.before_change_head + repository.rugged.references.create('HEAD', + "refs/heads/#{branch}", + force: true) + repository.copy_gitattributes(branch) + repository.after_change_head + reload_default_branch + else + errors.add(:base, "Could not change HEAD: branch '#{branch}' does not exist") + false + end end def forked_from?(project) |