diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index dd0c3c3ec554342c28b2ce3d7d6366511ac85ca5..6f7ed9a3ce410b60d75803e56d6e3448c949081a 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -61,7 +61,7 @@ class ApplicationController < ActionController::Base
     else
       @branch = params[:branch].blank? ? nil : params[:branch]
       @tag = params[:tag].blank? ? nil : params[:tag]
-      @ref = @branch || @tag || Repository.default_ref
+      @ref = @branch || @tag || @project.try(:default_branch) || Repository.default_ref
     end
   end
 
diff --git a/app/models/project.rb b/app/models/project.rb
index d881b4d7920e56d19d6511138bf2c3cd172ab769..a5361313911d64f1c7bf25f5614369f4d10607dd 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -158,7 +158,7 @@ class Project < ActiveRecord::Base
   end
 
   def root_ref 
-    "master"
+    default_branch || "master"
   end
 
   def public?
diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml
index 90d8a54a4d59062680025e5dd0dff50748779958..8a39dece6cd58b2585c89b147846b59f5b6dede2 100644
--- a/app/views/layouts/project.html.haml
+++ b/app/views/layouts/project.html.haml
@@ -49,7 +49,7 @@
                   %span{ :class => "number" }= @project.snippets.non_expired.count
 
               - if can? current_user, :admin_project, @project
-                = link_to "Project", edit_project_path(@project), :class => (current_page?(edit_project_path(@project))) ? "current" : nil
+                = link_to "Admin", edit_project_path(@project), :class => (current_page?(edit_project_path(@project))) ? "current" : nil
 
             .medium-tags{:style => 'padding: 10px 0 0 10px; width: 210px;'}= tag_list @project
 
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index ce2fd069b55d81aab134a16f678e10b0202cc353..5901801b4f7abeccaf281eb041ef6710e777151e 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -29,6 +29,11 @@
           %cite.right= "http://#{GIT_HOST["host"]}/"
         %td= f.text_field :code, :placeholder => "example"
 
+      - unless @project.heads.empty?  
+        %tr
+          %td= f.label :default_branch, "Default Branch"
+          %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;")
+
       %tr
         %td= f.label :tag_list
         %td= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field
@@ -57,4 +62,5 @@
 :javascript
   $(function(){
     taggifyForm();
+    $('form #project_default_branch').chosen();
   })
diff --git a/db/migrate/20111207211728_add_default_branch_to_project.rb b/db/migrate/20111207211728_add_default_branch_to_project.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5c2107f7aa57ae5f8d7fb236784f54e77aeb1538
--- /dev/null
+++ b/db/migrate/20111207211728_add_default_branch_to_project.rb
@@ -0,0 +1,5 @@
+class AddDefaultBranchToProject < ActiveRecord::Migration
+  def change
+    add_column :projects, :default_branch, :string, :null => false, :default => "master"
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index fd50bf32c529c5eca838858482ce1ab892ba647a..17246a614f87584f92ea93bc24d814c075be2d7d 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20111206222316) do
+ActiveRecord::Schema.define(:version => 20111207211728) do
 
   create_table "features", :force => true do |t|
     t.string   "name"
@@ -76,9 +76,10 @@ ActiveRecord::Schema.define(:version => 20111206222316) do
     t.text     "description"
     t.datetime "created_at"
     t.datetime "updated_at"
-    t.boolean  "private_flag", :default => true, :null => false
+    t.boolean  "private_flag",   :default => true,     :null => false
     t.string   "code"
     t.integer  "owner_id"
+    t.string   "default_branch", :default => "master", :null => false
   end
 
   create_table "snippets", :force => true do |t|
diff --git a/lib/gitlabhq/gitolite.rb b/lib/gitlabhq/gitolite.rb
index 10ab87bdaf86fe316383033687f12311a0a19ce2..e79afb55577fb558ade0ebb53bb6fd2046bbc241 100644
--- a/lib/gitlabhq/gitolite.rb
+++ b/lib/gitlabhq/gitolite.rb
@@ -42,7 +42,7 @@ module Gitlabhq
     end
 
     def destroy_project(project)
-      `sudo -u git rm -rf #{project.path_to_repo}`
+      FileUtils.rm_rf(project.path_to_repo)
       
       ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite'))
       conf = ga_repo.config