From 1961b590700c3f1168322039b5992bc904fdeda1 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 5 Dec 2014 15:42:26 +0200 Subject: Add locked_at to merge request Signed-off-by: Dmitriy Zaporozhets --- db/migrate/20141205134006_add_locked_at_to_merge_request.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20141205134006_add_locked_at_to_merge_request.rb diff --git a/db/migrate/20141205134006_add_locked_at_to_merge_request.rb b/db/migrate/20141205134006_add_locked_at_to_merge_request.rb new file mode 100644 index 00000000000..49651c44a82 --- /dev/null +++ b/db/migrate/20141205134006_add_locked_at_to_merge_request.rb @@ -0,0 +1,5 @@ +class AddLockedAtToMergeRequest < ActiveRecord::Migration + def change + add_column :merge_requests, :locked_at, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index ec211901e42..b8335c5841b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20141121161704) do +ActiveRecord::Schema.define(version: 20141205134006) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -181,6 +181,7 @@ ActiveRecord::Schema.define(version: 20141121161704) do t.integer "iid" t.text "description" t.integer "position", default: 0 + t.datetime "locked_at" end add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree -- cgit v1.2.1 From b23f71ec4d76bc1a6ed4b6c1add8dbc8fb32eb40 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 5 Dec 2014 15:49:25 +0200 Subject: Set/unset merge request locked_at timestamp after transition Signed-off-by: Dmitriy Zaporozhets --- app/models/merge_request.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 7c525b02f48..e558c4164e9 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -70,6 +70,16 @@ class MergeRequest < ActiveRecord::Base transition locked: :reopened end + after_transition any => :locked do |merge_request, transition| + merge_request.locked_at = Time.now + merge_request.save + end + + after_transition :locked => (any - :locked) do |merge_request, transition| + merge_request.locked_at = nil + merge_request.save + end + state :opened state :reopened state :closed -- cgit v1.2.1 From 6487419364fa9c179e24028d85b2be10d574067f Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 5 Dec 2014 16:02:08 +0200 Subject: Automatically close merge requests that were locker for 1 day Signed-off-by: Dmitriy Zaporozhets --- app/controllers/projects/merge_requests_controller.rb | 5 +++++ app/models/merge_request.rb | 4 ++++ app/views/projects/merge_requests/show/_state_widget.html.haml | 6 ++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 20a733b10e1..bd43d15984d 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -225,6 +225,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController @allowed_to_merge = allowed_to_merge? @show_merge_controls = @merge_request.open? && @commits.any? && @allowed_to_merge @source_branch = @merge_request.source_project.repository.find_branch(@merge_request.source_branch).try(:name) + + if @merge_request.locked_long_ago? + @merge_request.unlock_mr + @merge_request.close + end end def allowed_to_merge? diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index e558c4164e9..2cc427d35c2 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -346,4 +346,8 @@ class MergeRequest < ActiveRecord::Base source_project.repository.branch_names end end + + def locked_long_ago? + locked_at && locked_at < (Time.now - 1.day) + end end diff --git a/app/views/projects/merge_requests/show/_state_widget.html.haml b/app/views/projects/merge_requests/show/_state_widget.html.haml index 87dad6140be..f909948995c 100644 --- a/app/views/projects/merge_requests/show/_state_widget.html.haml +++ b/app/views/projects/merge_requests/show/_state_widget.html.haml @@ -11,8 +11,10 @@ - if @merge_request.closed? %h4 - Closed by #{link_to_member(@project, @merge_request.closed_event.author, avatar: false)} - #{time_ago_with_tooltip(@merge_request.closed_event.created_at)} + Closed + - if @merge_request.closed_event + by #{link_to_member(@project, @merge_request.closed_event.author, avatar: false)} + #{time_ago_with_tooltip(@merge_request.closed_event.created_at)} %p Changes were not merged into target branch - if @merge_request.merged? -- cgit v1.2.1