@@ -142,6 +142,7 @@ async def merge_request(
142142 mr : MergeRequestPayload ,
143143 conversation_tokens : list [str ],
144144 participant_ids_filter : list [int ],
145+ new_commits_revoke_approvals : bool ,
145146):
146147 payload_fingerprint = hashlib .sha256 (mr .model_dump_json ().encode ("utf8" )).hexdigest ()
147148 logger .debug ("payload fingerprint: %s" , payload_fingerprint )
@@ -176,6 +177,22 @@ async def merge_request(
176177 if row is not None :
177178 mri .merge_request_extra_state = row ["merge_request_extra_state" ]
178179
180+ # If update and oldrev field is set => new commit in MR
181+ # Approvals must be reset
182+ if new_commits_revoke_approvals and mr .object_attributes .oldrev :
183+ row = await connection .fetchrow (
184+ """UPDATE merge_request_ref
185+ SET merge_request_extra_state = jsonb_set(merge_request_extra_state, $1, $2::jsonb)
186+ WHERE merge_request_ref_id = $3
187+ RETURNING merge_request_extra_state""" ,
188+ ["approvers" ],
189+ {},
190+ mri .merge_request_ref_id ,
191+ )
192+ print (mri .merge_request_ref_id )
193+ if row is not None :
194+ mri .merge_request_extra_state = row ["merge_request_extra_state" ]
195+
179196 # if it's a transition from draft to ready
180197 # - Delete all messages related to this MR prior to the current event update
181198 # then create_or_update_message will re-post new message
0 commit comments