summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects/branches_controller.rb12
-rw-r--r--app/controllers/projects/tags_controller.rb14
-rw-r--r--app/models/event.rb14
-rw-r--r--app/models/repository.rb8
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))