# HG changeset patch # User Pierre-Yves David # Date 1567550043 -7200 # Node ID bd5858c28bbe9840ac9d27d39e298d0457276d9f # Parent 66dc5a522f37b2c4283d56da6b762a35f7ee3680 flagprocessors: have the read transform function return side data (API) This makes it possible for flag processors to -read- flag data. Differential Revision: https://phab.mercurial-scm.org/D6813 diff -r 66dc5a522f37 -r bd5858c28bbe hgext/lfs/wrapper.py --- a/hgext/lfs/wrapper.py Wed Sep 04 00:13:45 2019 +0200 +++ b/hgext/lfs/wrapper.py Wed Sep 04 00:34:03 2019 +0200 @@ -104,7 +104,7 @@ if hgmeta or text.startswith('\1\n'): text = storageutil.packmeta(hgmeta, text) - return (text, True) + return (text, True, {}) def writetostore(self, text): # hg filelog metadata (includes rename, etc) diff -r 66dc5a522f37 -r bd5858c28bbe mercurial/revlog.py --- a/mercurial/revlog.py Wed Sep 04 00:13:45 2019 +0200 +++ b/mercurial/revlog.py Wed Sep 04 00:34:03 2019 +0200 @@ -113,7 +113,7 @@ # Flag processors for REVIDX_ELLIPSIS. def ellipsisreadprocessor(rl, text): - return text, False + return text, False, {} def ellipsiswriteprocessor(rl, text): return text, False diff -r 66dc5a522f37 -r bd5858c28bbe mercurial/revlogutils/flagutil.py --- a/mercurial/revlogutils/flagutil.py Wed Sep 04 00:13:45 2019 +0200 +++ b/mercurial/revlogutils/flagutil.py Wed Sep 04 00:34:03 2019 +0200 @@ -192,7 +192,8 @@ if operation == 'raw': vhash = rawtransform(self, text) elif operation == 'read': - text, vhash = readtransform(self, text) + text, vhash, s = readtransform(self, text) + outsidedata.update(s) else: # write operation text, vhash = writetransform(self, text) validatehash = validatehash and vhash diff -r 66dc5a522f37 -r bd5858c28bbe tests/flagprocessorext.py --- a/tests/flagprocessorext.py Wed Sep 04 00:13:45 2019 +0200 +++ b/tests/flagprocessorext.py Wed Sep 04 00:34:03 2019 +0200 @@ -33,17 +33,20 @@ def noopdonothing(self, text): return (text, True) +def noopdonothingread(self, text): + return (text, True, {}) + def b64encode(self, text): return (base64.b64encode(text), False) def b64decode(self, text): - return (base64.b64decode(text), True) + return (base64.b64decode(text), True, {}) def gzipcompress(self, text): return (zlib.compress(text), False) def gzipdecompress(self, text): - return (zlib.decompress(text), True) + return (zlib.decompress(text), True, {}) def supportedoutgoingversions(orig, repo): versions = orig(repo) @@ -116,7 +119,7 @@ flagutil.addflagprocessor( REVIDX_NOOP, ( - noopdonothing, + noopdonothingread, noopdonothing, validatehash, ) diff -r 66dc5a522f37 -r bd5858c28bbe tests/test-revlog-raw.py --- a/tests/test-revlog-raw.py Wed Sep 04 00:13:45 2019 +0200 +++ b/tests/test-revlog-raw.py Wed Sep 04 00:34:03 2019 +0200 @@ -45,7 +45,7 @@ def readprocessor(self, rawtext): # True: the returned text could be used to verify hash text = rawtext[len(_extheader):].replace(b'i', b'1') - return text, True + return text, True, {} def writeprocessor(self, text): # False: the returned rawtext shouldn't be used to verify hash