diff --git a/mercurial/formatter.py b/mercurial/formatter.py --- a/mercurial/formatter.py +++ b/mercurial/formatter.py @@ -5,6 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. +import cPickle from i18n import _ import encoding, util @@ -77,6 +78,16 @@ class debugformatter(baseformatter): baseformatter.end(self) self._ui.write("]\n") +class pickleformatter(baseformatter): + def __init__(self, ui, topic, opts): + baseformatter.__init__(self, ui, topic, opts) + self._data = [] + def _showitem(self): + self._data.append(self._item) + def end(self): + baseformatter.end(self) + self._ui.write(cPickle.dumps(self._data)) + class jsonformatter(baseformatter): def __init__(self, ui, topic, opts): baseformatter.__init__(self, ui, topic, opts) @@ -108,6 +119,8 @@ def formatter(ui, topic, opts): template = opts.get("template", "") if template == "json": return jsonformatter(ui, topic, opts) + elif template == "pickle": + return pickleformatter(ui, topic, opts) elif template == "debug": return debugformatter(ui, topic, opts) elif template != "": diff --git a/tests/test-locate.t b/tests/test-locate.t --- a/tests/test-locate.t +++ b/tests/test-locate.t @@ -128,4 +128,14 @@ Issue294: hg remove --after dir fails wh ../t.h (glob) ../t/e.h (glob) + $ hg files + ../b + ../dir.h/foo + ../t.h + ../t/b + ../t/e.h + ../t/x + $ hg files . + [1] + $ cd ../.. diff --git a/tests/test-status.t b/tests/test-status.t --- a/tests/test-status.t +++ b/tests/test-status.t @@ -202,6 +202,12 @@ hg status -A: } ] + $ hg status -A -Tpickle > pickle + >>> import pickle + >>> print sorted((x['status'], x['path']) for x in pickle.load(open("pickle"))) + [('!', 'deleted'), ('?', 'pickle'), ('?', 'unknown'), ('A', 'added'), ('A', 'copied'), ('C', '.hgignore'), ('C', 'modified'), ('I', 'ignored'), ('R', 'removed')] + $ rm pickle + $ echo "^ignoreddir$" > .hgignore $ mkdir ignoreddir $ touch ignoreddir/file