diff -r e598c874b4af -r 2f1d6180737f mercurial/transaction.py --- a/mercurial/transaction.py Sat Dec 28 12:25:16 2019 -0500 +++ b/mercurial/transaction.py Wed Jan 15 15:47:03 2020 +0100 @@ -506,9 +506,12 @@ self._validator(self) # will raise exception if needed self._validator = None # Help prevent cycles. self._generatefiles(group=gengroupprefinalize) - categories = sorted(self._finalizecallback) - for cat in categories: - self._finalizecallback[cat](self) + while self._finalizecallback: + callbacks = self._finalizecallback + self._finalizecallback = {} + categories = sorted(callbacks) + for cat in categories: + callbacks[cat](self) # Prevent double usage and help clear cycles. self._finalizecallback = None self._generatefiles(group=gengrouppostfinalize)