summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-08-08 15:16:54 +0000
committerRémy Coutable <remy@rymai.me>2017-08-08 15:16:54 +0000
commit143b5293b0e7f6fb4df64f5bc0b600d72aa6bbb1 (patch)
tree671c577e81471640d84d0d5dc1979ec3667c1e5f /app/models
parent6a6a1e5b9e0a82735f786ffedeacc7cbc33ed7cd (diff)
parent98535fc12cc381d562d916c4947a763511a828a7 (diff)
downloadgitlab-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.rb19
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)