summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/contexts/projects/update_context.rb10
-rw-r--r--app/models/project.rb10
-rw-r--r--app/models/repository.rb2
-rw-r--r--app/observers/project_observer.rb6
4 files changed, 19 insertions, 9 deletions
diff --git a/app/contexts/projects/update_context.rb b/app/contexts/projects/update_context.rb
index 40385fa65b0..9564dd94688 100644
--- a/app/contexts/projects/update_context.rb
+++ b/app/contexts/projects/update_context.rb
@@ -3,6 +3,16 @@ module Projects
def execute(role = :default)
params[:project].delete(:namespace_id)
params[:project].delete(:public) unless can?(current_user, :change_public_mode, project)
+ new_branch = params[:project].delete(:default_branch)
+
+ if project.repository.exists? && new_branch != project.repository.root_ref
+ GitlabShellWorker.perform_async(
+ :update_repository_head,
+ project.path_with_namespace,
+ new_branch
+ )
+ end
+
project.update_attributes(params[:project], as: role)
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 52682ac0a9e..65d42b6b870 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -28,7 +28,7 @@ class Project < ActiveRecord::Base
include Gitlab::ShellAdapter
extend Enumerize
- attr_accessible :name, :path, :description, :default_branch, :issues_tracker, :label_list,
+ attr_accessible :name, :path, :description, :issues_tracker, :label_list,
:issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
:wiki_enabled, :public, :import_url, :last_activity_at, as: [:default, :admin]
@@ -36,6 +36,8 @@ class Project < ActiveRecord::Base
acts_as_taggable_on :labels, :issues_default_labels
+ attr_accessor :new_default_branch
+
# Relations
belongs_to :creator, foreign_key: "creator_id", class_name: "User"
belongs_to :group, foreign_key: "namespace_id", conditions: "type = 'Group'"
@@ -143,7 +145,7 @@ class Project < ActiveRecord::Base
end
def repository
- @repository ||= Repository.new(path_with_namespace, default_branch)
+ @repository ||= Repository.new(path_with_namespace)
end
def saved?
@@ -451,4 +453,8 @@ class Project < ActiveRecord::Base
def project_member(user)
users_projects.where(user_id: user).first
end
+
+ def default_branch
+ @default_branch ||= repository.root_ref if repository.exists?
+ end
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 97b4330092a..80918d6de4b 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -3,7 +3,7 @@ class Repository
attr_accessor :raw_repository, :path_with_namespace
- def initialize(path_with_namespace, default_branch)
+ def initialize(path_with_namespace, default_branch = nil)
@path_with_namespace = path_with_namespace
@raw_repository = Gitlab::Git::Repository.new(path_to_repo) if path_with_namespace
rescue Gitlab::Git::Repository::NoRepository
diff --git a/app/observers/project_observer.rb b/app/observers/project_observer.rb
index f301f306458..4e3deec01bf 100644
--- a/app/observers/project_observer.rb
+++ b/app/observers/project_observer.rb
@@ -30,12 +30,6 @@ class ProjectObserver < BaseObserver
def after_update(project)
project.send_move_instructions if project.namespace_id_changed?
project.rename_repo if project.path_changed?
-
- GitlabShellWorker.perform_async(
- :update_repository_head,
- project.path_with_namespace,
- project.default_branch
- ) if project.default_branch_changed?
end
def before_destroy(project)