Pulkit Goyal <7895pulkit@gmail.com> [Sun, 25 Jun 2017 03:11:55 +0530] rev 33096
py3: add b'' to make the regex pattern bytes
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Jun 2017 17:20:46 +0530] rev 33095
py3: use hex() to convert the hash to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Jun 2017 19:57:50 +0530] rev 33094
py3: add b'' to make a triple quoted string bytes on Python 3
Transformer does not adds b'' in front of triple quoted strings to prevent
converting docs to bytes.
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Jun 2017 19:55:41 +0530] rev 33093
py3: add tests to show `hg bookmarks` and `hg branches` work on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Jun 2017 19:55:01 +0530] rev 33092
py3: fix kwargs handling for `hg bookmarks`
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Jun 2017 09:37:16 +0900] rev 33091
identify: provide changectx to templater
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Jun 2017 09:33:01 +0900] rev 33090
formatter: proxy fm.context() through converter
Otherwise nested template formatter would not see the context objects.
It's just a boolean flag now. We might want to change it to 'ctxs -> items'
function so changectx attributes are populated automatically in JSON, but
I'm not sure.
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Jun 2017 09:18:55 +0900] rev 33089
identify: change p1/p2 to a list of parents
It makes sense because the nested data structure is a list of items.
Jun Wu <quark@fb.com> [Sun, 25 Jun 2017 13:31:56 -0700] rev 33088
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.
Jun Wu <quark@fb.com> [Sun, 25 Jun 2017 10:38:45 -0700] rev 33087
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.