diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/contexts/projects/update_context.rb | 10 | ||||
-rw-r--r-- | app/models/project.rb | 10 | ||||
-rw-r--r-- | app/models/repository.rb | 2 | ||||
-rw-r--r-- | app/observers/project_observer.rb | 6 |
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) |