push: wrap local phase movement in a transaction
Phases are not yet inside the transaction, but we need to prepare for it. So we
wrap the phase movement inside a transaction.
--- a/mercurial/exchange.py Wed Aug 06 00:50:53 2014 -0700
+++ b/mercurial/exchange.py Wed Aug 06 00:54:15 2014 -0700
@@ -577,7 +577,12 @@
def _localphasemove(pushop, nodes, phase=phases.public):
"""move <nodes> to <phase> in the local source repo"""
if pushop.locallocked:
- phases.advanceboundary(pushop.repo, phase, nodes)
+ tr = pushop.repo.transaction('push-phase-sync')
+ try:
+ phases.advanceboundary(pushop.repo, phase, nodes)
+ tr.close()
+ finally:
+ tr.release()
else:
# repo is not locked, do not change any phases!
# Informs the user that phases should have been moved when