summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-05-07 10:28:50 +0000
committerDouwe Maan <douwe@gitlab.com>2015-05-07 10:28:50 +0000
commit7a23be3ab7c8b3911a35686516ac7fe3f43c81a6 (patch)
tree79b2fc7546ff140c54f62863a238a9eb4dddd56f /app
parent60887cf94904e10cd26246301d09a49be49ef5fa (diff)
parent03138a3c72d9ccdfda6398564c6183de70c68df5 (diff)
downloadgitlab-ce-7a23be3ab7c8b3911a35686516ac7fe3f43c81a6.tar.gz
Merge branch 'fix-default-branch' into 'master'
Make the first branch pushed to an empty repository the default HEAD In an empty repository, pushing a new branch not called "master" would leave HEAD in an unknown state, causing ambiguity if another branch were pushed. This could in turn cause a new protected branch to be created and cause the default branch to change. * Closes #1561 * Closes #1576 * Closes https://github.com/gitlabhq/gitlabhq/issues/8883 See merge request !614
Diffstat (limited to 'app')
-rw-r--r--app/services/git_push_service.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index 1b889e0da8b..bdf36af02fd 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -31,6 +31,10 @@ class GitPushService
# Initial push to the default branch. Take the full history of that branch as "newly pushed".
@push_commits = project.repository.commits(newrev)
+ # Ensure HEAD points to the default branch in case it is not master
+ branch_name = Gitlab::Git.ref_name(ref)
+ project.change_head(branch_name)
+
# Set protection on the default branch if configured
if (current_application_settings.default_branch_protection != PROTECTION_NONE)
developers_can_push = current_application_settings.default_branch_protection == PROTECTION_DEV_CAN_PUSH ? true : false