Commit 8587e3a357add7371b2286f3ab642c9ea8f58e2e
1 parent
2a37db4c
Exists in
master
and in
4 other branches
create corresponding events when create branch/tag with UI
Showing
4 changed files
with
36 additions
and
12 deletions
Show diff stats
app/controllers/projects/branches_controller.rb
| @@ -12,16 +12,20 @@ class Projects::BranchesController < Projects::ApplicationController | @@ -12,16 +12,20 @@ class Projects::BranchesController < Projects::ApplicationController | ||
| 12 | end | 12 | end |
| 13 | 13 | ||
| 14 | def create | 14 | def create |
| 15 | - @project.repository.add_branch(params[:branch_name], params[:ref]) | 15 | + @repository.add_branch(params[:branch_name], params[:ref]) |
| 16 | + | ||
| 17 | + if new_branch = @repository.find_branch(params[:branch_name]) | ||
| 18 | + Event.create_ref_event(@project, current_user, new_branch, 'add') | ||
| 19 | + end | ||
| 16 | 20 | ||
| 17 | redirect_to project_branches_path(@project) | 21 | redirect_to project_branches_path(@project) |
| 18 | end | 22 | end |
| 19 | 23 | ||
| 20 | def destroy | 24 | def destroy |
| 21 | - branch = @project.repository.branches.find { |branch| branch.name == params[:id] } | 25 | + branch = @repository.find_branch(params[:id]) |
| 22 | 26 | ||
| 23 | - if branch && @project.repository.rm_branch(branch.name) | ||
| 24 | - Event.create_rm_ref(@project, current_user, branch) | 27 | + if branch && @repository.rm_branch(branch.name) |
| 28 | + Event.create_ref_event(@project, current_user, branch, 'rm') | ||
| 25 | end | 29 | end |
| 26 | 30 | ||
| 27 | respond_to do |format| | 31 | respond_to do |format| |
app/controllers/projects/tags_controller.rb
| @@ -8,20 +8,24 @@ class Projects::TagsController < Projects::ApplicationController | @@ -8,20 +8,24 @@ class Projects::TagsController < Projects::ApplicationController | ||
| 8 | before_filter :authorize_admin_project!, only: [:destroy] | 8 | before_filter :authorize_admin_project!, only: [:destroy] |
| 9 | 9 | ||
| 10 | def index | 10 | def index |
| 11 | - @tags = Kaminari.paginate_array(@project.repository.tags).page(params[:page]).per(30) | 11 | + @tags = Kaminari.paginate_array(@repository.tags).page(params[:page]).per(30) |
| 12 | end | 12 | end |
| 13 | 13 | ||
| 14 | def create | 14 | def create |
| 15 | - @project.repository.add_tag(params[:tag_name], params[:ref]) | 15 | + @repository.add_tag(params[:tag_name], params[:ref]) |
| 16 | + | ||
| 17 | + if new_tag = @repository.find_tag(params[:tag_name]) | ||
| 18 | + Event.create_ref_event(@project, current_user, new_tag, 'add', 'refs/tags') | ||
| 19 | + end | ||
| 16 | 20 | ||
| 17 | redirect_to project_tags_path(@project) | 21 | redirect_to project_tags_path(@project) |
| 18 | end | 22 | end |
| 19 | 23 | ||
| 20 | def destroy | 24 | def destroy |
| 21 | - tag = @project.repository.tags.find { |tag| tag.name == params[:id] } | 25 | + tag = @repository.find_tag(params[:id]) |
| 22 | 26 | ||
| 23 | - if tag && @project.repository.rm_tag(tag.name) | ||
| 24 | - Event.create_rm_ref(@project, current_user, tag, 'refs/tags') | 27 | + if tag && @repository.rm_tag(tag.name) |
| 28 | + Event.create_ref_event(@project, current_user, tag, 'rm', 'refs/tags') | ||
| 25 | end | 29 | end |
| 26 | 30 | ||
| 27 | respond_to do |format| | 31 | respond_to do |format| |
app/models/event.rb
| @@ -55,14 +55,22 @@ class Event < ActiveRecord::Base | @@ -55,14 +55,22 @@ class Event < ActiveRecord::Base | ||
| 55 | end | 55 | end |
| 56 | end | 56 | end |
| 57 | 57 | ||
| 58 | - def create_rm_ref(project, user, ref, prefix = 'refs/heads') | 58 | + def create_ref_event(project, user, ref, action = 'add', prefix = 'refs/heads') |
| 59 | + if action.to_s == 'add' | ||
| 60 | + before = '00000000' | ||
| 61 | + after = ref.commit.id | ||
| 62 | + else | ||
| 63 | + before = ref.commit.id | ||
| 64 | + after = '00000000' | ||
| 65 | + end | ||
| 66 | + | ||
| 59 | Event.create( | 67 | Event.create( |
| 60 | project: project, | 68 | project: project, |
| 61 | action: Event::PUSHED, | 69 | action: Event::PUSHED, |
| 62 | data: { | 70 | data: { |
| 63 | ref: "#{prefix}/#{ref.name}", | 71 | ref: "#{prefix}/#{ref.name}", |
| 64 | - before: ref.commit.id, | ||
| 65 | - after: '00000000' | 72 | + before: before, |
| 73 | + after: after | ||
| 66 | }, | 74 | }, |
| 67 | author_id: user.id | 75 | author_id: user.id |
| 68 | ) | 76 | ) |
app/models/repository.rb
| @@ -35,6 +35,14 @@ class Repository | @@ -35,6 +35,14 @@ class Repository | ||
| 35 | commits | 35 | commits |
| 36 | end | 36 | end |
| 37 | 37 | ||
| 38 | + def find_branch(name) | ||
| 39 | + branches.find { |branch| branch.name == name } | ||
| 40 | + end | ||
| 41 | + | ||
| 42 | + def find_tag(name) | ||
| 43 | + tags.find { |tag| tag.name == name } | ||
| 44 | + end | ||
| 45 | + | ||
| 38 | def add_branch(branch_name, ref) | 46 | def add_branch(branch_name, ref) |
| 39 | Rails.cache.delete(cache_key(:branch_names)) | 47 | Rails.cache.delete(cache_key(:branch_names)) |
| 40 | 48 |