Refactor tracking of MR title, desc, and draft status
What does this MR do?
When I initially added the tracking logic to MergeRequest::UpdateService
(!53077 (merged) and !53551 (merged)) I hadn't been able to
track down where we were triggering additional update events, which was
resetting ActiveModel::Dirty#changes
(etc) pushing me to cobble together
holding state of incoming changes. This was a fine approach, but it
avoided tackling the complexity of this service head-on. In returning to
the code today, I see now how MergeRequest#mark_as_unchecked
is triggering an update
on state change (thanks to the state machine behind that..) and can
sequence the code more appropriately and, critically, more flexibly for
deliverables (#15332 (closed)) I have in this release.
Edited by Kerri Miller