Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 17:59:57 +0900] rev 28212
templatefilters: make json filter be byte-transparent (BC) (
issue4926)
This is necessary to preserve filename encoding over JSON. Instead, this
patch inserts "|utf8" where non-ascii local-encoding texts can be passed
to "|json".
See also the commit that introduced "utf8" filter.
Yuya Nishihara <yuya@tcha.org> [Mon, 04 Jan 2016 23:05:09 +0900] rev 28211
hgweb: add option to convert encoding of graphdata()
Because future patches will change "|json" filter to handle input bytes
transparently, i.e. use UTF-8b encoding, "{jsdata}" must keep data in UTF-8
bytes, whereas "{nodes}" are text.
This patch inserts encodestr() where localstr is likely to survive.
Yuya Nishihara <yuya@tcha.org> [Mon, 04 Jan 2016 22:55:05 +0900] rev 28210
hgweb: remove unused argument from graphdata() factory
As graphdata() is wrapped by lambda, there's no reason to pass unused
arguments to it.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 17:45:05 +0900] rev 28209
templatefilters: add "utf8" to get utf-8 bytes from local-encoding text
This will be applied prior to "|json" filter. This sounds like odd, but it
is necessary to handle local-encoding text as well as raw filename bytes.
Because filenames are bytes in Mercurial and Unix world, {filename|json} should
preserve the original byte sequence, which implies
{x|json} -> '"' toutf8b(x) '"'
On the other hand, most template strings are in local encoding. Because
"|json" filter have to be byte-transparent to filenames, we need something to
annotate an input as a local string, that's what "|utf8" will do.
{x|utf8|json} -> '"' toutf8b(fromlocal(x)) '"'
"|utf8" is an explicit call, so aborts if input bytes can't be converted to
UTF-8.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 17:16:45 +0900] rev 28208
templatefilters: drop broken "jsonescape" from filters table (BC)
It's been unused, undocumented and flawed in that it expects a unicode input,
never works correctly if an input has non-ascii character. We should use "json"
filter instead.
Martin von Zweigbergk <martinvonz@google.com> [Sat, 20 Feb 2016 23:57:21 -0800] rev 28207
treemanifest: rewrite text() using iterentries()
This simplifies a bit. Note that the function is only used when
manually testing with _treeinmem=True.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 07 Feb 2016 21:14:01 -0800] rev 28206
treemanifest: implement iterentries()
To make tests pass with _treeinmem manually set to True, we need to
implement the recently added iterentries() on the treemanifest class
too.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Feb 2016 15:38:56 -0800] rev 28205
verify: show progress while verifying dirlogs
In repos with treemanifests, the non-root-directory dirlogs often have
many more total revisions than the root manifest log has. This change
adds progress out to that part of 'hg verify'. Since the verification
is recursive along the directory tree, we don't know how many total
revisions there are at the beginning of the command, so instead we
report progress in units of directories, much like we report progress
for verification of files today.
I'm not very happy with passing both 'storefiles' and 'progress' into
the recursive calls. I tried passing in just a 'visitdir(dir)'
callback, but the results did not seem better overall. I'm happy to
update if anyone has better ideas.