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 | 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 | ... | ... |