[merge] accept LogFormatter instances in cmd_log.run
Adeodato Simó
dato at net.com.org.es
Fri Jul 28 13:40:43 BST 2006
Hello.
For me, one of the things that makes me most happy about bzr, is the
fact that it gives me enough rope to hang myself [1]. In other words,
that thanks to plugins users are allowed to customize it heavily if they
so wish, in ways that may be no appropriate for bzr mainline.
Since I do this regularly, I always have a handful of ideas to make the
API more useful to third-party code. I let them mature, let the ones
that are crackful die, and propose the sensible ones here :-P, e.g.
add_runtime_ignores.
Another one that strikes me as sensible is having cmd_log.run accept a
LogFormatter instance in the log_format argument. The rationale is the
following: one can, of course, create a CustomLogFormatter class,
register it, and call log with log_format='custom_format'. However, this
is of little use when one wants the class to collect data, since there
is no way to retrieve the created CustomLogFormatter instance back from
cmd_log.run().
Hence the attached patch [2]. I also think something similar should be
done for for all "options accepts these values, plugins can register
more" options (e.g. --template in my commit_templates branch).
About the patch, I've tried to figure where this could be tested, but I
didn't found any test for a similar functionality, so any suggestions
are welcome.
Cheers,
References:
[1] http://chistera.yi.org/~adeodato/blog/bzr/54_wrapping_bzr_diff.html
[2] http://people.debian.org/~adeodato/code/bzr/branches/log_accept_log_formatter
--
Adeodato Simó dato at net.com.org.es
Debian Developer adeodato at debian.org
You've come to the right place. At debian-devel we are always willing
to argue over the meanings of words.
-- seen on debian-devel at l.d.o
-------------- next part --------------
# Bazaar revision bundle v0.8
#
# message:
# bzrlib/builtins.py:
# - (cmd_log.run) accept log_format to be a LogFormatter instance.
#
# committer: Adeodato Simó <dato at net.com.org.es>
# date: Fri 2006-07-28 14:09:58.588000059 +0200
=== modified file bzrlib/builtins.py
--- bzrlib/builtins.py
+++ bzrlib/builtins.py
@@ -1315,7 +1315,7 @@
long=False,
short=False,
line=False):
- from bzrlib.log import log_formatter, show_log
+ from bzrlib.log import log_formatter, show_log, LogFormatter
assert message is None or isinstance(message, basestring), \
"invalid message argument %r" % message
direction = (forward and 'forward') or 'reverse'
@@ -1371,10 +1371,14 @@
default = b.get_config().log_format()
log_format = get_log_format(long=long, short=short, line=line,
default=default)
- lf = log_formatter(log_format,
- show_ids=show_ids,
- to_file=self.outf,
- show_timezone=timezone)
+
+ if not isinstance(log_format, LogFormatter):
+ lf = log_formatter(log_format,
+ show_ids=show_ids,
+ to_file=self.outf,
+ show_timezone=timezone)
+ else:
+ lf = log_format
show_log(b,
lf,
# revision id: dato at net.com.org.es-20060728120958-6887cdc39925a655
# sha1: f8453f248a6ef0a35d48b4e1617c1cb20128d3a6
# inventory sha1: febb914d1a8180ca40e923a3f5e6c095bd09fb95
# parent ids:
# pqm at pqm.ubuntu.com-20060727200511-3bfb6377b1695fad
# base id: pqm at pqm.ubuntu.com-20060727200511-3bfb6377b1695fad
# properties:
# branch-nick: log_accept_log_formatter
More information about the bazaar
mailing list