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 12 end
13 13  
14 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 21 redirect_to project_branches_path(@project)
18 22 end
19 23  
20 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 29 end
26 30  
27 31 respond_to do |format|
... ...
app/controllers/projects/tags_controller.rb
... ... @@ -8,20 +8,24 @@ class Projects::TagsController < Projects::ApplicationController
8 8 before_filter :authorize_admin_project!, only: [:destroy]
9 9  
10 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 12 end
13 13  
14 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 21 redirect_to project_tags_path(@project)
18 22 end
19 23  
20 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 29 end
26 30  
27 31 respond_to do |format|
... ...
app/models/event.rb
... ... @@ -55,14 +55,22 @@ class Event < ActiveRecord::Base
55 55 end
56 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 67 Event.create(
60 68 project: project,
61 69 action: Event::PUSHED,
62 70 data: {
63 71 ref: "#{prefix}/#{ref.name}",
64   - before: ref.commit.id,
65   - after: '00000000'
  72 + before: before,
  73 + after: after
66 74 },
67 75 author_id: user.id
68 76 )
... ...
app/models/repository.rb
... ... @@ -35,6 +35,14 @@ class Repository
35 35 commits
36 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 46 def add_branch(branch_name, ref)
39 47 Rails.cache.delete(cache_key(:branch_names))
40 48  
... ...