Commit 8587e3a357add7371b2286f3ab642c9ea8f58e2e

Authored by Dmitriy Zaporozhets
1 parent 2a37db4c

create corresponding events when create branch/tag with UI

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