Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-07-17 01:09:23 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-07-17 01:09:23 +0400
commitcbe9f56afae2b1e55de96f59eed36859eea6eb82 (patch)
tree2427dac71344f08e85a941ba59adf21396c90f7a
parentd65eb22e2d5f0de8984855919d644a562003b9b2 (diff)
Ability to create new branch via UI
-rw-r--r--app/controllers/projects/branches_controller.rb6
-rw-r--r--app/models/repository.rb10
-rw-r--r--app/views/projects/branches/new.html.haml24
-rw-r--r--app/views/projects/repositories/_filter.html.haml7
-rw-r--r--config/routes.rb4
5 files changed, 47 insertions, 4 deletions
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index b43017f5522..a9d9cfb61e1 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -10,7 +10,9 @@ class Projects::BranchesController < Projects::ApplicationController
end
def create
- # TODO: implement
+ @project.repository.add_branch(params[:branch_name], params[:ref])
+
+ redirect_to project_branches_path(@project)
end
def destroy
@@ -21,7 +23,7 @@ class Projects::BranchesController < Projects::ApplicationController
end
respond_to do |format|
- format.html { redirect_to project_branches_path }
+ format.html { redirect_to project_branches_path(@project) }
format.js { render nothing: true }
end
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 08574625012..b1f751a5cf3 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -35,11 +35,21 @@ class Repository
commits
end
+ def add_branch(branch_name, ref)
+ Rails.cache.delete(cache_key(:branch_names))
+
+ gitlab_shell.add_branch(path_with_namespace, branch_name, ref)
+ end
+
def rm_branch(branch_name)
+ Rails.cache.delete(cache_key(:branch_names))
+
gitlab_shell.rm_branch(path_with_namespace, branch_name)
end
def rm_tag(tag_name)
+ Rails.cache.delete(cache_key(:tag_names))
+
gitlab_shell.rm_tag(path_with_namespace, tag_name)
end
diff --git a/app/views/projects/branches/new.html.haml b/app/views/projects/branches/new.html.haml
new file mode 100644
index 00000000000..8df2c03f6c1
--- /dev/null
+++ b/app/views/projects/branches/new.html.haml
@@ -0,0 +1,24 @@
+%h3.page-title
+ %i.icon-code-fork
+ New branch
+= form_tag project_branches_path, method: :post do
+ .control-group
+ = label_tag :branch_name, 'Name for new branch', class: 'control-label'
+ .controls
+ = text_field_tag :branch_name, nil, placeholder: 'feature/dashboard'
+ .control-group
+ = label_tag :ref, 'Create from', class: 'control-label'
+ .controls
+ = text_field_tag :ref, nil, placeholder: 'master'
+ .light branch name or commit SHA
+ .form-actions
+ = submit_tag 'Create branch', class: 'btn btn-create'
+ = link_to 'Cancel', project_branches_path(@project), class: 'btn btn-cancel'
+
+:javascript
+ var availableTags = #{@project.repository.ref_names.to_json};
+
+ $("#ref").autocomplete({
+ source: availableTags,
+ minLength: 1
+ });
diff --git a/app/views/projects/repositories/_filter.html.haml b/app/views/projects/repositories/_filter.html.haml
index f42493ea4a0..138fd6d5118 100644
--- a/app/views/projects/repositories/_filter.html.haml
+++ b/app/views/projects/repositories/_filter.html.haml
@@ -7,3 +7,10 @@
%i.icon-lock
= nav_link(path: 'branches#index') do
= link_to 'All branches', project_branches_path(@project)
+
+
+%hr
+ = link_to new_project_branch_path(@project), class: 'btn btn-create' do
+ %i.icon-add-sign
+ New branch
+
diff --git a/config/routes.rb b/config/routes.rb
index 0bae5d44395..2d9875eb496 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -223,8 +223,8 @@ Gitlab::Application.routes.draw do
end
end
- resources :tags, only: [:index, :create, :destroy]
- resources :branches, only: [:index, :create, :destroy]
+ resources :tags, only: [:index, :new, :create, :destroy]
+ resources :branches, only: [:index, :new, :create, :destroy]
resources :protected_branches, only: [:index, :create, :destroy]
resources :refs, only: [] do