Commit 253680bb authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'improve/default_branch' of /home/git/repositories/gitlab/gitlabhq

parents d618a5fe 7ab3bf96
...@@ -9,6 +9,8 @@ v 6.3.0 ...@@ -9,6 +9,8 @@ v 6.3.0
- Fixed issue with 500 error when group did not exist - Fixed issue with 500 error when group did not exist
- Ability to leave project - Ability to leave project
- You can create file in repo using UI - You can create file in repo using UI
- API: dropped default_branch attribute from project during creation
- Project default_branch is not stored in db any more. It takes from repo now.
v 6.2.0 v 6.2.0
- Public project pages are now visible to everyone (files, issues, wik, etc.) - Public project pages are now visible to everyone (files, issues, wik, etc.)
......
...@@ -3,6 +3,16 @@ module Projects ...@@ -3,6 +3,16 @@ module Projects
def execute(role = :default) def execute(role = :default)
params[:project].delete(:namespace_id) params[:project].delete(:namespace_id)
params[:project].delete(:public) unless can?(current_user, :change_public_mode, project) 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) project.update_attributes(params[:project], as: role)
end end
end end
......
...@@ -28,7 +28,7 @@ class Project < ActiveRecord::Base ...@@ -28,7 +28,7 @@ class Project < ActiveRecord::Base
include Gitlab::ShellAdapter include Gitlab::ShellAdapter
extend Enumerize 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, :issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
:wiki_enabled, :public, :import_url, :last_activity_at, as: [:default, :admin] :wiki_enabled, :public, :import_url, :last_activity_at, as: [:default, :admin]
...@@ -36,6 +36,8 @@ class Project < ActiveRecord::Base ...@@ -36,6 +36,8 @@ class Project < ActiveRecord::Base
acts_as_taggable_on :labels, :issues_default_labels acts_as_taggable_on :labels, :issues_default_labels
attr_accessor :new_default_branch
# Relations # Relations
belongs_to :creator, foreign_key: "creator_id", class_name: "User" belongs_to :creator, foreign_key: "creator_id", class_name: "User"
belongs_to :group, foreign_key: "namespace_id", conditions: "type = 'Group'" belongs_to :group, foreign_key: "namespace_id", conditions: "type = 'Group'"
...@@ -143,7 +145,7 @@ class Project < ActiveRecord::Base ...@@ -143,7 +145,7 @@ class Project < ActiveRecord::Base
end end
def repository def repository
@repository ||= Repository.new(path_with_namespace, default_branch) @repository ||= Repository.new(path_with_namespace)
end end
def saved? def saved?
...@@ -451,4 +453,8 @@ class Project < ActiveRecord::Base ...@@ -451,4 +453,8 @@ class Project < ActiveRecord::Base
def project_member(user) def project_member(user)
users_projects.where(user_id: user).first users_projects.where(user_id: user).first
end end
def default_branch
@default_branch ||= repository.root_ref if repository.exists?
end
end end
...@@ -3,7 +3,7 @@ class Repository ...@@ -3,7 +3,7 @@ class Repository
attr_accessor :raw_repository, :path_with_namespace 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 @path_with_namespace = path_with_namespace
@raw_repository = Gitlab::Git::Repository.new(path_to_repo) if path_with_namespace @raw_repository = Gitlab::Git::Repository.new(path_to_repo) if path_with_namespace
rescue Gitlab::Git::Repository::NoRepository rescue Gitlab::Git::Repository::NoRepository
......
...@@ -30,12 +30,6 @@ class ProjectObserver < BaseObserver ...@@ -30,12 +30,6 @@ class ProjectObserver < BaseObserver
def after_update(project) def after_update(project)
project.send_move_instructions if project.namespace_id_changed? project.send_move_instructions if project.namespace_id_changed?
project.rename_repo if project.path_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 end
def before_destroy(project) def before_destroy(project)
......
class RemoveDefaultBranch < ActiveRecord::Migration
def up
remove_column :projects, :default_branch
end
def down
add_column :projects, :default_branch, :string
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20131009115346) do ActiveRecord::Schema.define(:version => 20131106151520) do
create_table "deploy_keys_projects", :force => true do |t| create_table "deploy_keys_projects", :force => true do |t|
t.integer "deploy_key_id", :null => false t.integer "deploy_key_id", :null => false
...@@ -171,7 +171,6 @@ ActiveRecord::Schema.define(:version => 20131009115346) do ...@@ -171,7 +171,6 @@ ActiveRecord::Schema.define(:version => 20131009115346) do
t.datetime "created_at", :null => false t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.integer "creator_id" t.integer "creator_id"
t.string "default_branch"
t.boolean "issues_enabled", :default => true, :null => false t.boolean "issues_enabled", :default => true, :null => false
t.boolean "wall_enabled", :default => true, :null => false t.boolean "wall_enabled", :default => true, :null => false
t.boolean "merge_requests_enabled", :default => true, :null => false t.boolean "merge_requests_enabled", :default => true, :null => false
......
...@@ -213,7 +213,6 @@ Parameters: ...@@ -213,7 +213,6 @@ Parameters:
+ `name` (required) - new project name + `name` (required) - new project name
+ `description` (optional) - short project description + `description` (optional) - short project description
+ `default_branch` (optional) - 'master' by default
+ `issues_enabled` (optional) + `issues_enabled` (optional)
+ `wall_enabled` (optional) + `wall_enabled` (optional)
+ `merge_requests_enabled` (optional) + `merge_requests_enabled` (optional)
......
...@@ -23,7 +23,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps ...@@ -23,7 +23,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
end end
step 'public project "Community"' do step 'public project "Community"' do
create :project_with_code, name: 'Community', public: true, default_branch: 'master' create :project_with_code, name: 'Community', public: true
end end
step 'public empty project "Empty Public Project"' do step 'public empty project "Empty Public Project"' do
......
...@@ -60,7 +60,6 @@ module API ...@@ -60,7 +60,6 @@ module API
# Parameters: # Parameters:
# name (required) - name for new project # name (required) - name for new project
# description (optional) - short project description # description (optional) - short project description
# default_branch (optional) - 'master' by default
# issues_enabled (optional) # issues_enabled (optional)
# wall_enabled (optional) # wall_enabled (optional)
# merge_requests_enabled (optional) # merge_requests_enabled (optional)
...@@ -75,7 +74,6 @@ module API ...@@ -75,7 +74,6 @@ module API
attrs = attributes_for_keys [:name, attrs = attributes_for_keys [:name,
:path, :path,
:description, :description,
:default_branch,
:issues_enabled, :issues_enabled,
:wall_enabled, :wall_enabled,
:merge_requests_enabled, :merge_requests_enabled,
......
...@@ -116,13 +116,13 @@ describe MergeRequest do ...@@ -116,13 +116,13 @@ describe MergeRequest do
end end
it 'accesses the set of issues that will be closed on acceptance' do it 'accesses the set of issues that will be closed on acceptance' do
subject.project.default_branch = subject.target_branch subject.project.stub(default_branch: subject.target_branch)
subject.closes_issues.should == [issue0, issue1].sort_by(&:id) subject.closes_issues.should == [issue0, issue1].sort_by(&:id)
end end
it 'only lists issues as to be closed if it targets the default branch' do it 'only lists issues as to be closed if it targets the default branch' do
subject.project.default_branch = 'master' subject.project.stub(default_branch: 'master')
subject.target_branch = 'something-else' subject.target_branch = 'something-else'
subject.closes_issues.should be_empty subject.closes_issues.should be_empty
......
...@@ -91,7 +91,6 @@ describe API::API do ...@@ -91,7 +91,6 @@ describe API::API do
it "should assign attributes to project" do it "should assign attributes to project" do
project = attributes_for(:project, { project = attributes_for(:project, {
description: Faker::Lorem.sentence, description: Faker::Lorem.sentence,
default_branch: 'stable',
issues_enabled: false, issues_enabled: false,
wall_enabled: false, wall_enabled: false,
merge_requests_enabled: false, merge_requests_enabled: false,
...@@ -110,16 +109,13 @@ describe API::API do ...@@ -110,16 +109,13 @@ describe API::API do
project = attributes_for(:project, { public: true }) project = attributes_for(:project, { public: true })
post api("/projects", user), project post api("/projects", user), project
json_response['public'].should be_true json_response['public'].should be_true
end end
it "should set a project as private" do it "should set a project as private" do
project = attributes_for(:project, { public: false }) project = attributes_for(:project, { public: false })
post api("/projects", user), project post api("/projects", user), project
json_response['public'].should be_false json_response['public'].should be_false
end end
end end
describe "POST /projects/user/:id" do describe "POST /projects/user/:id" do
...@@ -146,7 +142,6 @@ describe API::API do ...@@ -146,7 +142,6 @@ describe API::API do
it "should assign attributes to project" do it "should assign attributes to project" do
project = attributes_for(:project, { project = attributes_for(:project, {
description: Faker::Lorem.sentence, description: Faker::Lorem.sentence,
default_branch: 'stable',
issues_enabled: false, issues_enabled: false,
wall_enabled: false, wall_enabled: false,
merge_requests_enabled: false, merge_requests_enabled: false,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment