From 8587e3a357add7371b2286f3ab642c9ea8f58e2e Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Date: Wed, 17 Jul 2013 15:11:03 +0300 Subject: [PATCH] create corresponding events when create branch/tag with UI --- app/controllers/projects/branches_controller.rb | 12 ++++++++---- app/controllers/projects/tags_controller.rb | 14 +++++++++----- app/models/event.rb | 14 +++++++++++--- app/models/repository.rb | 8 ++++++++ 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb index cd28d75409f..97dbb2bc0c0 100644 --- a/app/controllers/projects/branches_controller.rb +++ b/app/controllers/projects/branches_controller.rb @@ -12,16 +12,20 @@ class Projects::BranchesController < Projects::ApplicationController end def create - @project.repository.add_branch(params[:branch_name], params[:ref]) + @repository.add_branch(params[:branch_name], params[:ref]) + + if new_branch = @repository.find_branch(params[:branch_name]) + Event.create_ref_event(@project, current_user, new_branch, 'add') + end redirect_to project_branches_path(@project) end def destroy - branch = @project.repository.branches.find { |branch| branch.name == params[:id] } + branch = @repository.find_branch(params[:id]) - if branch && @project.repository.rm_branch(branch.name) - Event.create_rm_ref(@project, current_user, branch) + if branch && @repository.rm_branch(branch.name) + Event.create_ref_event(@project, current_user, branch, 'rm') end respond_to do |format| diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb index 8a6b9a59fdd..9dbb0d81888 100644 --- a/app/controllers/projects/tags_controller.rb +++ b/app/controllers/projects/tags_controller.rb @@ -8,20 +8,24 @@ class Projects::TagsController < Projects::ApplicationController before_filter :authorize_admin_project!, only: [:destroy] def index - @tags = Kaminari.paginate_array(@project.repository.tags).page(params[:page]).per(30) + @tags = Kaminari.paginate_array(@repository.tags).page(params[:page]).per(30) end def create - @project.repository.add_tag(params[:tag_name], params[:ref]) + @repository.add_tag(params[:tag_name], params[:ref]) + + if new_tag = @repository.find_tag(params[:tag_name]) + Event.create_ref_event(@project, current_user, new_tag, 'add', 'refs/tags') + end redirect_to project_tags_path(@project) end def destroy - tag = @project.repository.tags.find { |tag| tag.name == params[:id] } + tag = @repository.find_tag(params[:id]) - if tag && @project.repository.rm_tag(tag.name) - Event.create_rm_ref(@project, current_user, tag, 'refs/tags') + if tag && @repository.rm_tag(tag.name) + Event.create_ref_event(@project, current_user, tag, 'rm', 'refs/tags') end respond_to do |format| diff --git a/app/models/event.rb b/app/models/event.rb index 3ed2a6aa765..759e84bb55a 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -55,14 +55,22 @@ class Event < ActiveRecord::Base end end - def create_rm_ref(project, user, ref, prefix = 'refs/heads') + def create_ref_event(project, user, ref, action = 'add', prefix = 'refs/heads') + if action.to_s == 'add' + before = '00000000' + after = ref.commit.id + else + before = ref.commit.id + after = '00000000' + end + Event.create( project: project, action: Event::PUSHED, data: { ref: "#{prefix}/#{ref.name}", - before: ref.commit.id, - after: '00000000' + before: before, + after: after }, author_id: user.id ) diff --git a/app/models/repository.rb b/app/models/repository.rb index 1915fb07de0..588cabfbae0 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -35,6 +35,14 @@ class Repository commits end + def find_branch(name) + branches.find { |branch| branch.name == name } + end + + def find_tag(name) + tags.find { |tag| tag.name == name } + end + def add_branch(branch_name, ref) Rails.cache.delete(cache_key(:branch_names)) -- GitLab