Sun, 25 Jun 2017 13:31:56 -0700 scmutil: add a cleanupnodes method for developers
Jun Wu <quark@fb.com> [Sun, 25 Jun 2017 13:31:56 -0700] rev 33100
scmutil: add a cleanupnodes method for developers It's now common that an old node gets replaced by zero or more new nodes, that could happen with amend, rebase, histedit, etc. And it's a common requirement to do bookmark movements, strip or obsolete nodes and even moving working copy parent. Previously, amend, rebase, history have their own logic doing the above. This patch is an attempt to unify them and future code. This enables new developers to be able to do "replace X with Y" thing correctly, without any knowledge about bookmarks, strip or obsstore. The next step will be migrating rebase to the new API, so it works inside a transaction, and its code could be simplified.
Sun, 25 Jun 2017 10:38:45 -0700 strip: add a delayedstrip method that works in a transaction
Jun Wu <quark@fb.com> [Sun, 25 Jun 2017 10:38:45 -0700] rev 33099
strip: add a delayedstrip method that works in a transaction For long, the fact that strip does not work inside a transaction and some code has to work with both obsstore and fallback to strip lead to duplicated code like: with repo.transaction(): .... if obsstore: obsstore.createmarkers(...) if not obsstore: repair.strip(...) Things get more complex when you want to call something which may call strip under the hood. Like you cannot simply write: with repo.transaction(): .... rebasemod.rebase(...) # may call "strip", so this doesn't work But you do want rebase to run inside a same transaction if possible, so the code may look like: with repo.transaction(): .... if obsstore: rebasemod.rebase(...) obsstore.createmarkers(...) if not obsstore: rebasemod.rebase(...) repair.strip(...) That's ugly and error-prone. Ideally it's possible to just write: with repo.transaction(): rebasemod.rebase(...) saferemovenodes(...) This patch is the first step towards that. It adds a "delayedstrip" method to repair.py which maintains a postclose callback in the transaction object.
Sun, 25 Jun 2017 22:30:14 -0700 workingfilectx: add audit() as a wrapper for wvfs.audit()
Phil Cohen <phillco@fb.com> [Sun, 25 Jun 2017 22:30:14 -0700] rev 33098
workingfilectx: add audit() as a wrapper for wvfs.audit()
Sun, 25 Jun 2017 22:30:14 -0700 workingfilectx: add backgroundclose as a kwarg to write()
Phil Cohen <phillco@fb.com> [Sun, 25 Jun 2017 22:30:14 -0700] rev 33097
workingfilectx: add backgroundclose as a kwarg to write() This is necessary because some callers in merge.py pass backgroundclose=True when writing. As with previous changes in this series, this should be a no-op.
(0) -30000 -10000 -3000 -1000 -300 -100 -30 -10 -4 +4 +10 +30 +100 +300 +1000 +3000 +10000 tip