[MERGE][0.11] Make log's show_log a method of LogFormatter
James Westby
jw+debian at jameswestby.net
Sat Aug 26 02:55:21 BST 2006
Hi,
I was looking at adding a bzr backend to ikiwiki, and one of the things
which would be useful would be an xml log format (to stop people
being malicious with log messages).
I started to look at writing a plugin to do this (thanks for making the
API to do that so easy), but realised I needed to know when the last
revision had been processed (to close all the tags and output the
document).
Talking with j-a-meinel on IRC he suggested it would be good to make the
following change, both so I could write the plugin, and as a good thing
to do anyway.
The change is to make the show_log function of bzrlib/log.py in to a
method of the LogFormatter, and to then put some of the information in
to variables for use by the subclasses.
This allows more flexibility of LogFormatters, though I am not so sure
how much is needed.
The other changes are to deprecate the old function as of zero_eleven,
and to update all of the uses in the core code and tests.
I only wrote one test, for the deprecation, suggestions of other tests
would be welcome.
Also would there be any interest in an xml log format for the core? I
guess not, though it is something that is provided by svn.
James
--
James Westby
jw+debian at jameswestby.net
-------------- next part --------------
# Bazaar revision bundle v0.8
#
# message:
# Add deprecation test
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 23:09:35.960999966 +0100
=== modified file bzrlib/benchmarks/bench_log.py // last-changed:jw+debian at jame
... swestby.net-20060825210237-b2c73c10139f7c0f
--- bzrlib/benchmarks/bench_log.py
+++ bzrlib/benchmarks/bench_log.py
@@ -19,7 +19,7 @@
import sys
from bzrlib.benchmarks import Benchmark
-from bzrlib.log import log_formatter, show_log
+from bzrlib.log import log_formatter
from bzrlib.osutils import pathjoin
from cStringIO import StringIO
from bzrlib.transform import TreeTransform
@@ -45,13 +45,13 @@
"""Run log in a many-commit tree."""
tree = self.make_many_commit_tree(hardlink=True)
lf = log_formatter('long', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse')
+ self.time(lf.show_log, tree.branch, direction='reverse')
def test_merge_log(self):
"""Run log in a tree with many merges"""
tree = self.make_heavily_merged_tree(hardlink=True)
lf = log_formatter('short', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse')
+ self.time(lf.show_log, tree.branch, direction='reverse')
def test_log_screenful(self):
"""Simulate log --long|less"""
@@ -71,7 +71,7 @@
def log_screenful():
lf = log_formatter(formatter, to_file=LineConsumer(25))
try:
- show_log(tree.branch, lf, direction='reverse')
+ lf.show_log(tree.branch, direction='reverse')
except LinesDone:
pass
else:
@@ -92,4 +92,4 @@
"""'verbose' log -- shows file changes"""
tree = self.make_many_commit_tree(hardlink=True)
lf = log_formatter('long', to_file=StringIO())
- self.time(show_log, tree.branch, lf, direction='reverse', verbose=True)
+ self.time(lf.show_log, tree.branch, direction='reverse', verbose=True)
=== modified file bzrlib/builtins.py // last-changed:jw+debian at jameswestby.net-
... 20060825203638-54ea67fe0c5a13c0
--- bzrlib/builtins.py
+++ bzrlib/builtins.py
@@ -1323,7 +1323,7 @@
long=False,
short=False,
line=False):
- from bzrlib.log import log_formatter, show_log
+ from bzrlib.log import log_formatter
assert message is None or isinstance(message, basestring), \
"invalid message argument %r" % message
direction = (forward and 'forward') or 'reverse'
@@ -1384,8 +1384,7 @@
to_file=self.outf,
show_timezone=timezone)
- show_log(b,
- lf,
+ lf.show_log(b,
file_id,
verbose=verbose,
direction=direction,
@@ -2661,7 +2660,7 @@
def run(self, location=None,
dry_run=False, verbose=False,
revision=None, force=False):
- from bzrlib.log import log_formatter, show_log
+ from bzrlib.log import log_formatter
import sys
from bzrlib.uncommit import uncommit
@@ -2696,8 +2695,7 @@
to_file=self.outf,
show_timezone='original')
- show_log(b,
- lf,
+ lf.show_log(b,
verbose=False,
direction='forward',
start_revision=revno,
=== modified file bzrlib/log.py // last-changed:jw+debian at jameswestby.net-20060
... 825215943-bea150ecc60c4187
--- bzrlib/log.py
+++ bzrlib/log.py
@@ -57,6 +57,9 @@
import bzrlib.errors as errors
from bzrlib.trace import mutter
from bzrlib.tsort import merge_sort
+from bzrlib.symbol_versioning import (deprecated_function,
+ zero_eleven,
+ )
def find_touching_revisions(branch, file_id):
@@ -113,148 +116,6 @@
return rh
-def show_log(branch,
- lf,
- specific_fileid=None,
- verbose=False,
- direction='reverse',
- start_revision=None,
- end_revision=None,
- search=None):
- """Write out human-readable log of commits to this branch.
-
- lf
- LogFormatter object to show the output.
-
- specific_fileid
- If true, list only the commits affecting the specified
- file, rather than all commits.
-
- verbose
- If true show added/changed/deleted/renamed files.
-
- direction
- 'reverse' (default) is latest to earliest;
- 'forward' is earliest to latest.
-
- start_revision
- If not None, only show revisions >= start_revision
-
- end_revision
- If not None, only show revisions <= end_revision
- """
- branch.lock_read()
- try:
- _show_log(branch, lf, specific_fileid, verbose, direction,
- start_revision, end_revision, search)
- finally:
- branch.unlock()
-
-def _show_log(branch,
- lf,
- specific_fileid=None,
- verbose=False,
- direction='reverse',
- start_revision=None,
- end_revision=None,
- search=None):
- """Worker function for show_log - see show_log."""
- from bzrlib.osutils import format_date
- from bzrlib.errors import BzrCheckError
-
- from warnings import warn
-
- if not isinstance(lf, LogFormatter):
- warn("not a LogFormatter instance: %r" % lf)
-
- if specific_fileid:
- mutter('get log for file_id %r', specific_fileid)
-
- if search is not None:
- import re
- searchRE = re.compile(search, re.IGNORECASE)
- else:
- searchRE = None
-
- which_revs = _enumerate_history(branch)
-
- if start_revision is None:
- start_revision = 1
- else:
- branch.check_real_revno(start_revision)
-
- if end_revision is None:
- end_revision = len(which_revs)
- else:
- branch.check_real_revno(end_revision)
-
- # list indexes are 0-based; revisions are 1-based
- cut_revs = which_revs[(start_revision-1):(end_revision)]
- if not cut_revs:
- return
-
- # convert the revision history to a dictionary:
- rev_nos = dict((k, v) for v, k in cut_revs)
-
- # override the mainline to look like the revision history.
- mainline_revs = [revision_id for index, revision_id in cut_revs]
- if cut_revs[0][0] == 1:
- mainline_revs.insert(0, None)
- else:
- mainline_revs.insert(0, which_revs[start_revision-2][1])
- if getattr(lf, 'show_merge', None) is not None:
- include_merges = True
- else:
- include_merges = False
- view_revisions = list(get_view_revisions(mainline_revs, rev_nos, branch,
- direction, include_merges=include_merges))
-
- def iter_revisions():
- # r = revision, n = revno, d = merge depth
- revision_ids = [r for r, n, d in view_revisions]
- zeros = set(r for r, n, d in view_revisions if d == 0)
- num = 9
- repository = branch.repository
- while revision_ids:
- cur_deltas = {}
- revisions = repository.get_revisions(revision_ids[:num])
- if verbose or specific_fileid:
- delta_revisions = [r for r in revisions if
- r.revision_id in zeros]
- deltas = repository.get_deltas_for_revisions(delta_revisions)
- cur_deltas = dict(izip((r.revision_id for r in
- delta_revisions), deltas))
- for revision in revisions:
- # The delta value will be None unless
- # 1. verbose or specific_fileid is specified, and
- # 2. the revision is a mainline revision
- yield revision, cur_deltas.get(revision.revision_id)
- revision_ids = revision_ids[num:]
- num = int(num * 1.5)
-
- # now we just print all the revisions
- for ((rev_id, revno, merge_depth), (rev, delta)) in \
- izip(view_revisions, iter_revisions()):
-
- if searchRE:
- if not searchRE.search(rev.message):
- continue
-
- if merge_depth == 0:
- # a mainline revision.
-
- if specific_fileid:
- if not delta.touches_file_id(specific_fileid):
- continue
-
- if not verbose:
- # although we calculated it, throw it away without display
- delta = None
-
- lf.show(revno, rev, delta)
- else:
- lf.show_merge(rev, merge_depth)
-
def get_view_revisions(mainline_revs, rev_nos, branch, direction,
include_merges=True):
@@ -309,6 +170,28 @@
result.extend(chunk)
return result
+ at deprecated_function(zero_eleven)
+def show_log(branch,
+ lf,
+ specific_fileid=None,
+ verbose=False,
+ direction='reverse',
+ start_revision=None,
+ end_revision=None,
+ search=None):
+ """Write out human-readable log of commits to this branch.
+
+ DEPRECATED: use lf.show_log() instead.
+ """
+ lf.show_log(branch,
+ specific_fileid=specific_fileid,
+ verbose=verbose,
+ direction=direction,
+ start_revision=start_revision,
+ end_revision=end_revision,
+ search=search)
+
+
class LogFormatter(object):
"""Abstract class to display log messages."""
@@ -324,6 +207,142 @@
def short_committer(self, rev):
return re.sub('<.*@.*>', '', rev.committer).strip(' ')
+ def show_log(self,
+ branch,
+ specific_fileid=None,
+ verbose=False,
+ direction='reverse',
+ start_revision=None,
+ end_revision=None,
+ search=None):
+ """Write out human-readable log of commits to this branch.
+
+ specific_fileid
+ If true, list only the commits affecting the specified
+ file, rather than all commits.
+
+ verbose
+ If true show added/changed/deleted/renamed files.
+
+ direction
+ 'reverse' (default) is latest to earliest;
+ 'forward' is earliest to latest.
+
+ start_revision
+ If not None, only show revisions >= start_revision
+
+ end_revision
+ If not None, only show revisions <= end_revision
+ """
+ self.branch = branch
+ self.specific_fileid = specific_fileid
+ self.verbose = verbose
+ self.direction = direction
+ self.start_revision = start_revision
+ self.end_revision = end_revision
+ self.search = search
+ branch.lock_read()
+ try:
+ self._show_log()
+ finally:
+ branch.unlock()
+
+ def _show_log(self):
+ """Worker function for show_log - see show_log."""
+
+ if self.specific_fileid:
+ mutter('get log for file_id %r', self.specific_fileid)
+
+ branch = self.branch
+
+ if self.search is not None:
+ import re
+ searchRE = re.compile(self.search, re.IGNORECASE)
+ else:
+ searchRE = None
+
+ which_revs = _enumerate_history(branch)
+
+ if self.start_revision is None:
+ self.start_revision = 1
+ else:
+ branch.check_real_revno(self.start_revision)
+ start_revision = self.start_revision
+
+ if self.end_revision is None:
+ self.end_revision = len(which_revs)
+ else:
+ branch.check_real_revno(self.end_revision)
+ end_revision = self.end_revision
+
+ # list indexes are 0-based; revisions are 1-based
+ cut_revs = which_revs[(start_revision-1):(end_revision)]
+ if not cut_revs:
+ return
+
+ # convert the revision history to a dictionary:
+ rev_nos = dict((k, v) for v, k in cut_revs)
+
+ # override the mainline to look like the revision history.
+ mainline_revs = [revision_id for index, revision_id in cut_revs]
+ if cut_revs[0][0] == 1:
+ mainline_revs.insert(0, None)
+ else:
+ mainline_revs.insert(0, which_revs[start_revision-2][1])
+ if getattr(self, 'show_merge', None) is not None:
+ include_merges = True
+ else:
+ include_merges = False
+ view_revisions = list(get_view_revisions(mainline_revs, rev_nos, branch,
+ self.direction, include_merges=include_merges))
+
+ def iter_revisions():
+ # r = revision, n = revno, d = merge depth
+ revision_ids = [r for r, n, d in view_revisions]
+ zeros = set(r for r, n, d in view_revisions if d == 0)
+ num = 9
+ repository = branch.repository
+ self.repository = repository
+ while revision_ids:
+ cur_deltas = {}
+ revisions = repository.get_revisions(revision_ids[:num])
+ if self.verbose or self.specific_fileid:
+ delta_revisions = [r for r in revisions if
+ r.revision_id in zeros]
+ deltas = repository.get_deltas_for_revisions(delta_revisions)
+ cur_deltas = dict(izip((r.revision_id for r in
+ delta_revisions), deltas))
+ for revision in revisions:
+ # The delta value will be None unless
+ # 1. verbose or specific_fileid is specified, and
+ # 2. the revision is a mainline revision
+ yield revision, cur_deltas.get(revision.revision_id)
+ revision_ids = revision_ids[num:]
+ num = int(num * 1.5)
+
+ # now we just print all the revisions
+ for ((rev_id, revno, merge_depth), (rev, delta)) in \
+ izip(view_revisions, iter_revisions()):
+
+ if searchRE:
+ if not searchRE.search(rev.message):
+ continue
+
+ if merge_depth == 0:
+ # a mainline revision.
+
+ if self.specific_fileid:
+ if not delta.touches_file_id(self.specific_fileid):
+ continue
+
+ if not self.verbose:
+ # although we calculated it, throw it away without display
+ delta = None
+
+ self.show(revno, rev, delta)
+ else:
+ self.show_merge(rev, merge_depth)
+
class LongLogFormatter(LogFormatter):
def show(self, revno, rev, delta):
=== modified file bzrlib/symbol_versioning.py // last-changed:jw+debian at jameswe
... stby.net-20060825203638-54ea67fe0c5a13c0
--- bzrlib/symbol_versioning.py
+++ bzrlib/symbol_versioning.py
@@ -39,6 +39,7 @@
zero_eight = "%s was deprecated in version 0.8."
zero_nine = "%s was deprecated in version 0.9."
zero_ten = "%s was deprecated in version 0.10."
+zero_eleven = "%s was deprecated in version 0.11."
def set_warning_method(method):
=== modified file bzrlib/tests/test_log.py
--- bzrlib/tests/test_log.py
+++ bzrlib/tests/test_log.py
@@ -20,14 +20,15 @@
from cStringIO import StringIO
from bzrlib.tests import BzrTestBase, TestCaseWithTransport
-from bzrlib.log import (show_log,
- get_view_revisions,
+from bzrlib.log import (get_view_revisions,
+ show_log,
LogFormatter,
LongLogFormatter,
ShortLogFormatter,
LineLogFormatter)
from bzrlib.branch import Branch
from bzrlib.errors import InvalidRevisionNumber
+from bzrlib.symbol_versioning import zero_eleven
class _LogEntry(object):
@@ -77,38 +78,48 @@
lf = LogCatcher()
wt.commit('empty commit')
- show_log(b, lf, verbose=True, start_revision=1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ lf.show_log(b, verbose=True, start_revision=1, end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=2, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=0, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=0)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=-1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=-1)
+ def test_deprecated(self):
+ wt = self.make_branch_and_tree('.')
+ b = wt.branch
+
+ lf = LogCatcher()
+ wt.commit('empty commit')
+ self.callDeprecated([zero_eleven % 'bzrlib.log.show_log'],
+ show_log, b, lf, verbose=True,
+ start_revision=1, end_revision=1)
+
def test_cur_revno(self):
wt = self.make_branch_and_tree('.')
b = wt.branch
lf = LogCatcher()
wt.commit('empty commit')
- show_log(b, lf, verbose=True, start_revision=1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ lf.show_log(b, verbose=True, start_revision=1, end_revision=1)
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=2, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=0, end_revision=2)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=0)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=-1, end_revision=1)
- self.assertRaises(InvalidRevisionNumber, show_log, b, lf,
+ self.assertRaises(InvalidRevisionNumber, lf.show_log, b,
start_revision=1, end_revision=-1)
def test_simple_log(self):
@@ -118,13 +129,13 @@
b = wt.branch
lf = LogCatcher()
- show_log(b, lf)
+ lf.show_log(b)
# no entries yet
eq(lf.logs, [])
wt.commit('empty commit')
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
eq(len(lf.logs), 1)
eq(lf.logs[0].revno, 1)
eq(lf.logs[0].rev.message, 'empty commit')
@@ -138,14 +149,14 @@
lf = StringIO()
# log using regular thing
- show_log(b, LongLogFormatter(lf))
+ LongLogFormatter(lf).show_log(b)
lf.seek(0)
for l in lf.readlines():
self.log(l)
# get log as data structure
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
eq(len(lf.logs), 2)
self.log('log entries:')
for logentry in lf.logs:
@@ -164,7 +175,7 @@
self.log("original commit message: %r", msg)
wt.commit(msg)
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
committed_msg = lf.logs[0].rev.message
self.log("escaped commit message: %r", committed_msg)
self.assert_(msg != committed_msg)
@@ -179,7 +190,7 @@
self.log("original commit message: %r", msg)
wt.commit(msg)
lf = LogCatcher()
- show_log(b, lf, verbose=True)
+ lf.show_log(b, verbose=True)
committed_msg = lf.logs[0].rev.message
self.log("escaped commit message: %r", committed_msg)
self.assert_(msg == committed_msg)
@@ -207,7 +218,7 @@
sio = StringIO()
lf = ShortLogFormatter(to_file=sio)
- show_log(b, lf)
+ lf.show_log(b)
self.assertEquals(sio.getvalue(), """\
3 Joe Foo\t2005-11-21
single line with trailing newline
@@ -224,7 +235,7 @@
sio = StringIO()
lf = LongLogFormatter(to_file=sio)
- show_log(b, lf)
+ lf.show_log(b)
self.assertEquals(sio.getvalue(), """\
------------------------------------------------------------
revno: 3
@@ -268,7 +279,7 @@
committer='Lorem Ipsum <test at example.com>')
logfile = file('out.tmp', 'w+')
formatter = LongLogFormatter(to_file=logfile)
- show_log(b, formatter, verbose=True)
+ formatter.show_log(b, verbose=True)
logfile.flush()
logfile.seek(0)
log_contents = logfile.read()
@@ -300,7 +311,7 @@
committer='Line-Log-Formatter Tester <test at line.log>')
logfile = file('out.tmp', 'w+')
formatter = LineLogFormatter(to_file=logfile)
- show_log(b, formatter)
+ formatter.show_log(b)
logfile.flush()
logfile.seek(0)
log_contents = logfile.read()
# revision id: jw+debian at jameswestby.net-20060825220935-351cb246cd2acf90
# sha1: 6650a7ab3cd07f3bcf4c1f41bccb0da3d0218822
# inventory sha1: 08370232d97987cb57df700228592d479ef7a297
# parent ids:
# jw+debian at jameswestby.net-20060825215943-bea150ecc60c4187
# base id: jw+debian at jameswestby.net-20060825193653-d0b2583065322606
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Move the lock to make it clearer what the try: is for
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:59:43.551000118 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTIzNCw3ICsyMzQsNiBAQAog
ICAgICAgICBlbmRfcmV2aXNpb24KICAgICAgICAgICAgIElmIG5vdCBOb25lLCBvbmx5IHNob3cg
cmV2aXNpb25zIDw9IGVuZF9yZXZpc2lvbgogICAgICAgICAiIiIKLSAgICAgICAgYnJhbmNoLmxv
Y2tfcmVhZCgpCiAgICAgICAgIHNlbGYuYnJhbmNoID0gYnJhbmNoCiAgICAgICAgIHNlbGYuc3Bl
Y2lmaWNfZmlsZWlkID0gc3BlY2lmaWNfZmlsZWlkCiAgICAgICAgIHNlbGYudmVyYm9zZSA9IHZl
cmJvc2UKQEAgLTI0Miw2ICsyNDEsNyBAQAogICAgICAgICBzZWxmLnN0YXJ0X3JldmlzaW9uID0g
c3RhcnRfcmV2aXNpb24KICAgICAgICAgc2VsZi5lbmRfcmV2aXNpb24gPSBlbmRfcmV2aXNpb24K
ICAgICAgICAgc2VsZi5zZWFyY2ggPSBzZWFyY2gKKyAgICAgICAgYnJhbmNoLmxvY2tfcmVhZCgp
CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Nob3dfbG9nKCkKICAgICAgICAgZmlu
YWxseToKCg==
# revision id: jw+debian at jameswestby.net-20060825215943-bea150ecc60c4187
# sha1: c707f4c276fafe5581fe26f2955f7889c6d5e3a3
# inventory sha1: ec6e7026540707814d07c4211e572f8589358c06
# parent ids:
# jw+debian at jameswestby.net-20060825214009-e9b7d933c005ccac
# properties:
# branch-nick: bzr.dev.jamew
# message:
# ...and yet another one
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:40:09.740999937 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTI1Nyw3ICsyNTcsNyBAQAog
CiAgICAgICAgIGlmIHNlbGYuc2VhcmNoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaW1wb3J0
IHJlCi0gICAgICAgICAgICBzZWFyY2hSRSA9IHJlLmNvbXBpbGUoc2VhcmNoLCByZS5JR05PUkVD
QVNFKQorICAgICAgICAgICAgc2VhcmNoUkUgPSByZS5jb21waWxlKHNlbGYuc2VhcmNoLCByZS5J
R05PUkVDQVNFKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VhcmNoUkUgPSBOb25lCiAK
Cg==
# revision id: jw+debian at jameswestby.net-20060825214009-e9b7d933c005ccac
# sha1: 697a31173b03c93d403147106c5d720253f45e6c
# inventory sha1: 7c244683aaa2854b6a9cfd9a103286f45d872469
# parent ids:
# jw+debian at jameswestby.net-20060825212740-f3d426376b2e8202
# properties:
# branch-nick: bzr.dev.jamew
# message:
# And another one
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:27:40.028000116 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTI1MSw3ICsyNTEsNyBAQAog
ICAgICAgICAiIiJXb3JrZXIgZnVuY3Rpb24gZm9yIHNob3dfbG9nIC0gc2VlIHNob3dfbG9nLiIi
IgogCiAgICAgICAgIGlmIHNlbGYuc3BlY2lmaWNfZmlsZWlkOgotICAgICAgICAgICAgbXV0dGVy
KCdnZXQgbG9nIGZvciBmaWxlX2lkICVyJywgc3BlY2lmaWNfZmlsZWlkKQorICAgICAgICAgICAg
bXV0dGVyKCdnZXQgbG9nIGZvciBmaWxlX2lkICVyJywgc2VsZi5zcGVjaWZpY19maWxlaWQpCiAK
ICAgICAgICAgYnJhbmNoID0gc2VsZi5icmFuY2gKIAoK
# revision id: jw+debian at jameswestby.net-20060825212740-f3d426376b2e8202
# sha1: 2d5947287ddb7292b010ac176dfd30191bd42cf0
# inventory sha1: f8a52153df48ef6915973019f8ad06b74bb0011f
# parent ids:
# jw+debian at jameswestby.net-20060825211545-9b91e66a942b4ede
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Another syntax error
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:15:45.471999884 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTE4NCwxMiArMTg0LDEyIEBA
CiAgICAgREVQUkVDQVRFRDogdXNlIGxmLnNob3dfbG9nKCkgaW5zdGVhZC4KICAgICAiIiIKICAg
ICBsZi5zaG93X2xvZyhicmFuY2gsCi0gICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkPU5vbmUs
Ci0gICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKLSAgICAgICAgICAgICBkaXJlY3Rpb249J3Jl
dmVyc2UnLAotICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPU5vbmUsCi0gICAgICAgICAgICAg
ZW5kX3JldmlzaW9uPU5vbmUsCi0gICAgICAgICAgICAgc2VhcmNoPU5vbmUpCisgICAgICAgICAg
ICAgc3BlY2lmaWNfZmlsZWlkPXNwZWNpZmljX2ZpbGVpZCwKKyAgICAgICAgICAgICB2ZXJib3Nl
PXZlcmJvc2UsCisgICAgICAgICAgICAgZGlyZWN0aW9uPWRpcmVjdGlvbiwKKyAgICAgICAgICAg
ICBzdGFydF9yZXZpc2lvbj1zdGFydF9yZXZpc2lvbiwKKyAgICAgICAgICAgICBlbmRfcmV2aXNp
b249ZW5kX3JldmlzaW9uLAorICAgICAgICAgICAgIHNlYXJjaD1zZWFyY2gpCiAKIAogCkBAIC0y
OTQsNyArMjk0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGluY2x1ZGVfbWVyZ2Vz
ID0gRmFsc2UgCiAgICAgICAgIHZpZXdfcmV2aXNpb25zID0gbGlzdChnZXRfdmlld19yZXZpc2lv
bnMobWFpbmxpbmVfcmV2cywgcmV2X25vcywgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0aW9uLCBpbmNsdWRlX21lcmdlcz1pbmNsdWRlX21lcmdlcykpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpcmVjdGlvbiwgaW5jbHVkZV9tZXJnZXM9
aW5jbHVkZV9tZXJnZXMpKQogCiAgICAgICAgIGRlZiBpdGVyX3JldmlzaW9ucygpOgogICAgICAg
ICAgICAgIyByID0gcmV2aXNpb24sIG4gPSByZXZubywgZCA9IG1lcmdlIGRlcHRoCgo=
# revision id: jw+debian at jameswestby.net-20060825211545-9b91e66a942b4ede
# sha1: fb21d58c0b3ffd7cbb324062107aab1050c84b45
# inventory sha1: f1406a8f63f8438d5c8e46cc6b1047341f8b508f
# parent ids:
# jw+debian at jameswestby.net-20060825210437-afdc4b72738ac2c8
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Correct syntax error
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:04:37.983999968 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTE4OSw3ICsxODksNyBAQAog
ICAgICAgICAgICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScsCiAgICAgICAgICAgICAgc3RhcnRfcmV2
aXNpb249Tm9uZSwKICAgICAgICAgICAgICBlbmRfcmV2aXNpb249Tm9uZSwKLSAgICAgICAgICAg
ICBzZWFyY2g9Tm9uZSk6CisgICAgICAgICAgICAgc2VhcmNoPU5vbmUpCiAKIAogCgo=
# revision id: jw+debian at jameswestby.net-20060825210437-afdc4b72738ac2c8
# sha1: b9a62b1477cf20f29ded858527bee4736fcbffca
# inventory sha1: 1450c06e58974c73111a1f239eae31e47c61f3a1
# parent ids:
# jw+debian at jameswestby.net-20060825210237-b2c73c10139f7c0f
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Change some more calls to the new format
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 22:02:37.963999987 +0100
=== modified file bzrlib/benchmarks/bench_log.py // encoding:base64
LS0tIGJ6cmxpYi9iZW5jaG1hcmtzL2JlbmNoX2xvZy5weQorKysgYnpybGliL2JlbmNobWFya3Mv
YmVuY2hfbG9nLnB5CkBAIC0xOSw3ICsxOSw3IEBACiBpbXBvcnQgc3lzCiAKIGZyb20gYnpybGli
LmJlbmNobWFya3MgaW1wb3J0IEJlbmNobWFyawotZnJvbSBienJsaWIubG9nIGltcG9ydCBsb2df
Zm9ybWF0dGVyLCBzaG93X2xvZworZnJvbSBienJsaWIubG9nIGltcG9ydCBsb2dfZm9ybWF0dGVy
CiBmcm9tIGJ6cmxpYi5vc3V0aWxzIGltcG9ydCBwYXRoam9pbgogZnJvbSBjU3RyaW5nSU8gaW1w
b3J0IFN0cmluZ0lPCiBmcm9tIGJ6cmxpYi50cmFuc2Zvcm0gaW1wb3J0IFRyZWVUcmFuc2Zvcm0K
QEAgLTQ1LDEzICs0NSwxMyBAQAogICAgICAgICAiIiJSdW4gbG9nIGluIGEgbWFueS1jb21taXQg
dHJlZS4iIiIgCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfbWFueV9jb21taXRfdHJlZShoYXJk
bGluaz1UcnVlKQogICAgICAgICBsZiA9IGxvZ19mb3JtYXR0ZXIoJ2xvbmcnLCB0b19maWxlPVN0
cmluZ0lPKCkpCi0gICAgICAgIHNlbGYudGltZShzaG93X2xvZywgdHJlZS5icmFuY2gsIGxmLCBk
aXJlY3Rpb249J3JldmVyc2UnKQorICAgICAgICBzZWxmLnRpbWUobGYuc2hvd19sb2csIHRyZWUu
YnJhbmNoLCBkaXJlY3Rpb249J3JldmVyc2UnKQogCiAgICAgZGVmIHRlc3RfbWVyZ2VfbG9nKHNl
bGYpOgogICAgICAgICAiIiJSdW4gbG9nIGluIGEgdHJlZSB3aXRoIG1hbnkgbWVyZ2VzIiIiCiAg
ICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfaGVhdmlseV9tZXJnZWRfdHJlZShoYXJkbGluaz1UcnVl
KQogICAgICAgICBsZiA9IGxvZ19mb3JtYXR0ZXIoJ3Nob3J0JywgdG9fZmlsZT1TdHJpbmdJTygp
KQotICAgICAgICBzZWxmLnRpbWUoc2hvd19sb2csIHRyZWUuYnJhbmNoLCBsZiwgZGlyZWN0aW9u
PSdyZXZlcnNlJykKKyAgICAgICAgc2VsZi50aW1lKGxmLnNob3dfbG9nLCB0cmVlLmJyYW5jaCwg
ZGlyZWN0aW9uPSdyZXZlcnNlJykKIAogICAgIGRlZiB0ZXN0X2xvZ19zY3JlZW5mdWwoc2VsZik6
CiAgICAgICAgICIiIlNpbXVsYXRlIGxvZyAtLWxvbmd8bGVzcyIiIgpAQCAtNzEsNyArNzEsNyBA
QAogICAgICAgICBkZWYgbG9nX3NjcmVlbmZ1bCgpOgogICAgICAgICAgICAgbGYgPSBsb2dfZm9y
bWF0dGVyKGZvcm1hdHRlciwgdG9fZmlsZT1MaW5lQ29uc3VtZXIoMjUpKQogICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNob3dfbG9nKHRyZWUuYnJhbmNoLCBsZiwgZGlyZWN0aW9u
PSdyZXZlcnNlJykKKyAgICAgICAgICAgICAgICBsZi5zaG93X2xvZyh0cmVlLmJyYW5jaCwgZGly
ZWN0aW9uPSdyZXZlcnNlJykKICAgICAgICAgICAgIGV4Y2VwdCBMaW5lc0RvbmU6CiAgICAgICAg
ICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKQEAgLTkyLDQgKzkyLDQgQEAKICAgICAg
ICAgIiIiJ3ZlcmJvc2UnIGxvZyAtLSBzaG93cyBmaWxlIGNoYW5nZXMiIiIKICAgICAgICAgdHJl
ZSA9IHNlbGYubWFrZV9tYW55X2NvbW1pdF90cmVlKGhhcmRsaW5rPVRydWUpCiAgICAgICAgIGxm
ID0gbG9nX2Zvcm1hdHRlcignbG9uZycsIHRvX2ZpbGU9U3RyaW5nSU8oKSkKLSAgICAgICAgc2Vs
Zi50aW1lKHNob3dfbG9nLCB0cmVlLmJyYW5jaCwgbGYsIGRpcmVjdGlvbj0ncmV2ZXJzZScsIHZl
cmJvc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi50aW1lKGxmLnNob3dfbG9nLCB0cmVlLmJyYW5jaCwg
ZGlyZWN0aW9uPSdyZXZlcnNlJywgdmVyYm9zZT1UcnVlKQoK
# revision id: jw+debian at jameswestby.net-20060825210237-b2c73c10139f7c0f
# sha1: 9002f8f3c0f6a11ccad5e5f697e848a37d5a8cf7
# inventory sha1: 9c9685979f981bc10ba6f39e9446736580065b47
# parent ids:
# jw+debian at jameswestby.net-20060825205839-f675bc260dc36b97
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Cleanup. Use member vars instead of parameters. Remove unused imports
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 21:58:39.947999954 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTIzNSwzNCArMjM1LDI3IEBA
CiAgICAgICAgICAgICBJZiBub3QgTm9uZSwgb25seSBzaG93IHJldmlzaW9ucyA8PSBlbmRfcmV2
aXNpb24KICAgICAgICAgIiIiCiAgICAgICAgIGJyYW5jaC5sb2NrX3JlYWQoKQorICAgICAgICBz
ZWxmLmJyYW5jaCA9IGJyYW5jaAorICAgICAgICBzZWxmLnNwZWNpZmljX2ZpbGVpZCA9IHNwZWNp
ZmljX2ZpbGVpZAorICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYu
ZGlyZWN0aW9uID0gZGlyZWN0aW9uCisgICAgICAgIHNlbGYuc3RhcnRfcmV2aXNpb24gPSBzdGFy
dF9yZXZpc2lvbgorICAgICAgICBzZWxmLmVuZF9yZXZpc2lvbiA9IGVuZF9yZXZpc2lvbgorICAg
ICAgICBzZWxmLnNlYXJjaCA9IHNlYXJjaAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
Ll9zaG93X2xvZyhicmFuY2gsIHNwZWNpZmljX2ZpbGVpZCwgdmVyYm9zZSwgZGlyZWN0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uLCBlbmRfcmV2aXNpb24sIHNlYXJj
aCkKKyAgICAgICAgICAgIHNlbGYuX3Nob3dfbG9nKCkKICAgICAgICAgZmluYWxseToKICAgICAg
ICAgICAgIGJyYW5jaC51bmxvY2soKQogICAgICAgICAKLSAgICBkZWYgX3Nob3dfbG9nKHNlbGYs
Ci0gICAgICAgICAgICAgICAgIGJyYW5jaCwKLSAgICAgICAgICAgICAgICAgc3BlY2lmaWNfZmls
ZWlkPU5vbmUsCi0gICAgICAgICAgICAgICAgIHZlcmJvc2U9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScsCi0gICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9u
PU5vbmUsCi0gICAgICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj1Ob25lLAotICAgICAgICAgICAg
ICAgICBzZWFyY2g9Tm9uZSk6CisgICAgZGVmIF9zaG93X2xvZyhzZWxmKToKICAgICAgICAgIiIi
V29ya2VyIGZ1bmN0aW9uIGZvciBzaG93X2xvZyAtIHNlZSBzaG93X2xvZy4iIiIKLSAgICAgICAg
ZnJvbSBienJsaWIub3N1dGlscyBpbXBvcnQgZm9ybWF0X2RhdGUKLSAgICAgICAgZnJvbSBienJs
aWIuZXJyb3JzIGltcG9ydCBCenJDaGVja0Vycm9yCi0gICAgICAgIAotICAgICAgICBmcm9tIHdh
cm5pbmdzIGltcG9ydCB3YXJuCiAKLSAgICAgICAgaWYgc3BlY2lmaWNfZmlsZWlkOgorICAgICAg
ICBpZiBzZWxmLnNwZWNpZmljX2ZpbGVpZDoKICAgICAgICAgICAgIG11dHRlcignZ2V0IGxvZyBm
b3IgZmlsZV9pZCAlcicsIHNwZWNpZmljX2ZpbGVpZCkKIAotICAgICAgICBzZWxmLmRpcmVjdGlv
biA9IGRpcmVjdGlvbgotICAgICAgICBzZWxmLnNwZWNpZmljX2ZpbGVpZCA9IHNwZWNpZmljX2Zp
bGVpZAotICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAorICAgICAgICBicmFuY2ggPSBzZWxm
LmJyYW5jaAogCi0gICAgICAgIGlmIHNlYXJjaCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgc2Vs
Zi5zZWFyY2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgICAg
IHNlYXJjaFJFID0gcmUuY29tcGlsZShzZWFyY2gsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIGVs
c2U6CkBAIC0yNzAsMTcgKzI2MywxNyBAQAogCiAgICAgICAgIHdoaWNoX3JldnMgPSBfZW51bWVy
YXRlX2hpc3RvcnkoYnJhbmNoKQogICAgICAgICAKLSAgICAgICAgaWYgc3RhcnRfcmV2aXNpb24g
aXMgTm9uZToKLSAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uID0gMQorICAgICAgICBpZiBzZWxm
LnN0YXJ0X3JldmlzaW9uIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X3JldmlzaW9u
ID0gMQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJhbmNoLmNoZWNrX3JlYWxfcmV2bm8o
c3RhcnRfcmV2aXNpb24pCi0gICAgICAgIHNlbGYuc3RhcnRfcmV2aXNpb24gPSBzdGFydF9yZXZp
c2lvbgorICAgICAgICAgICAgYnJhbmNoLmNoZWNrX3JlYWxfcmV2bm8oc2VsZi5zdGFydF9yZXZp
c2lvbikKKyAgICAgICAgc3RhcnRfcmV2aXNpb24gPSBzZWxmLnN0YXJ0X3JldmlzaW9uCiAgICAg
ICAgIAotICAgICAgICBpZiBlbmRfcmV2aXNpb24gaXMgTm9uZToKLSAgICAgICAgICAgIGVuZF9y
ZXZpc2lvbiA9IGxlbih3aGljaF9yZXZzKQorICAgICAgICBpZiBzZWxmLmVuZF9yZXZpc2lvbiBp
cyBOb25lOgorICAgICAgICAgICAgc2VsZi5lbmRfcmV2aXNpb24gPSBsZW4od2hpY2hfcmV2cykK
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyYW5jaC5jaGVja19yZWFsX3Jldm5vKGVuZF9y
ZXZpc2lvbikKLSAgICAgICAgc2VsZi5lbmRfcmV2aXNpb24gPSBlbmRfcmV2aXNpb24KKyAgICAg
ICAgICAgIGJyYW5jaC5jaGVja19yZWFsX3Jldm5vKHNlbGYuZW5kX3JldmlzaW9uKQorICAgICAg
ICBlbmRfcmV2aXNpb24gPSBzZWxmLmVuZF9yZXZpc2lvbgogCiAgICAgICAgICMgbGlzdCBpbmRl
eGVzIGFyZSAwLWJhc2VkOyByZXZpc2lvbnMgYXJlIDEtYmFzZWQKICAgICAgICAgY3V0X3JldnMg
PSB3aGljaF9yZXZzWyhzdGFydF9yZXZpc2lvbi0xKTooZW5kX3JldmlzaW9uKV0KQEAgLTMxMyw3
ICszMDYsNyBAQAogICAgICAgICAgICAgd2hpbGUgcmV2aXNpb25faWRzOgogICAgICAgICAgICAg
ICAgIGN1cl9kZWx0YXMgPSB7fQogICAgICAgICAgICAgICAgIHJldmlzaW9ucyA9IHJlcG9zaXRv
cnkuZ2V0X3JldmlzaW9ucyhyZXZpc2lvbl9pZHNbOm51bV0pCi0gICAgICAgICAgICAgICAgaWYg
dmVyYm9zZSBvciBzcGVjaWZpY19maWxlaWQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJi
b3NlIG9yIHNlbGYuc3BlY2lmaWNfZmlsZWlkOgogICAgICAgICAgICAgICAgICAgICBkZWx0YV9y
ZXZpc2lvbnMgPSBbciBmb3IgciBpbiByZXZpc2lvbnMgaWYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHIucmV2aXNpb25faWQgaW4gemVyb3NdCiAgICAgICAgICAgICAg
ICAgICAgIGRlbHRhcyA9IHJlcG9zaXRvcnkuZ2V0X2RlbHRhc19mb3JfcmV2aXNpb25zKGRlbHRh
X3JldmlzaW9ucykKQEAgLTMzOCwxMSArMzMxLDExIEBACiAgICAgICAgICAgICBpZiBtZXJnZV9k
ZXB0aCA9PSAwOgogICAgICAgICAgICAgICAgICMgYSBtYWlubGluZSByZXZpc2lvbi4KICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgc3BlY2lmaWNfZmlsZWlkOgotICAg
ICAgICAgICAgICAgICAgICBpZiBub3QgZGVsdGEudG91Y2hlc19maWxlX2lkKHNwZWNpZmljX2Zp
bGVpZCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5zcGVjaWZpY19maWxlaWQ6CisgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBkZWx0YS50b3VjaGVzX2ZpbGVfaWQoc2VsZi5zcGVjaWZpY19m
aWxlaWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgaWYgbm90IHZlcmJvc2U6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu
dmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgIyBhbHRob3VnaCB3ZSBjYWxjdWxhdGVkIGl0
LCB0aHJvdyBpdCBhd2F5IHdpdGhvdXQgZGlzcGxheQogICAgICAgICAgICAgICAgICAgICBkZWx0
YSA9IE5vbmUKIAoK
# revision id: jw+debian at jameswestby.net-20060825205839-f675bc260dc36b97
# sha1: 2bc3c3e20d90763ee73020f277bc0301cdaf71a8
# inventory sha1: 44bcea9230a15b416d9a36b0f181ad80ea080b55
# parent ids:
# jw+debian at jameswestby.net-20060825204621-ee5081c4e55628e4
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Make the deprecated function call the new one
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 21:46:21.674000025 +0100
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTE4MiwyNyArMTgyLDE0IEBA
CiAgICAgIiIiV3JpdGUgb3V0IGh1bWFuLXJlYWRhYmxlIGxvZyBvZiBjb21taXRzIHRvIHRoaXMg
YnJhbmNoLgogCiAgICAgREVQUkVDQVRFRDogdXNlIGxmLnNob3dfbG9nKCkgaW5zdGVhZC4KLQot
ICAgIGxmCi0gICAgICAgIFRoZSBMb2dGb3JtYXR0ZXIgdG8gdXNlLgotCi0gICAgc3BlY2lmaWNf
ZmlsZWlkCi0gICAgICAgIElmIHRydWUsIGxpc3Qgb25seSB0aGUgY29tbWl0cyBhZmZlY3Rpbmcg
dGhlIHNwZWNpZmllZAotICAgICAgICBmaWxlLCByYXRoZXIgdGhhbiBhbGwgY29tbWl0cy4KLQot
ICAgIHZlcmJvc2UKLSAgICAgICAgSWYgdHJ1ZSBzaG93IGFkZGVkL2NoYW5nZWQvZGVsZXRlZC9y
ZW5hbWVkIGZpbGVzLgotCi0gICAgZGlyZWN0aW9uCi0gICAgICAgICdyZXZlcnNlJyAoZGVmYXVs
dCkgaXMgbGF0ZXN0IHRvIGVhcmxpZXN0OwotICAgICAgICAnZm9yd2FyZCcgaXMgZWFybGllc3Qg
dG8gbGF0ZXN0LgotCi0gICAgc3RhcnRfcmV2aXNpb24KLSAgICAgICAgSWYgbm90IE5vbmUsIG9u
bHkgc2hvdyByZXZpc2lvbnMgPj0gc3RhcnRfcmV2aXNpb24KLQotICAgIGVuZF9yZXZpc2lvbgot
ICAgICAgICBJZiBub3QgTm9uZSwgb25seSBzaG93IHJldmlzaW9ucyA8PSBlbmRfcmV2aXNpb24K
ICAgICAiIiIKKyAgICBsZi5zaG93X2xvZyhicmFuY2gsCisgICAgICAgICAgICAgc3BlY2lmaWNf
ZmlsZWlkPU5vbmUsCisgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKKyAgICAgICAgICAgICBk
aXJlY3Rpb249J3JldmVyc2UnLAorICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPU5vbmUsCisg
ICAgICAgICAgICAgZW5kX3JldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgc2VhcmNoPU5vbmUp
OgogCiAKIAoK
# revision id: jw+debian at jameswestby.net-20060825204621-ee5081c4e55628e4
# sha1: 6137775ef4dd0ffb8fdd5e20ffa6b024b20d55b9
# inventory sha1: db72075ff70f43938bb7ed3660e9f0bd0250868d
# parent ids:
# jw+debian at jameswestby.net-20060825203638-54ea67fe0c5a13c0
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Make show_log a method of LogFormatter, and deprecate the old function in zero_eleven. Update tests and other references. Add zero_eleven for symbol versioning
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 21:36:38.355000019 +0100
=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0xMzIzLDcg
KzEzMjMsNyBAQAogICAgICAgICAgICAgbG9uZz1GYWxzZSwKICAgICAgICAgICAgIHNob3J0PUZh
bHNlLAogICAgICAgICAgICAgbGluZT1GYWxzZSk6Ci0gICAgICAgIGZyb20gYnpybGliLmxvZyBp
bXBvcnQgbG9nX2Zvcm1hdHRlciwgc2hvd19sb2cKKyAgICAgICAgZnJvbSBienJsaWIubG9nIGlt
cG9ydCBsb2dfZm9ybWF0dGVyCiAgICAgICAgIGFzc2VydCBtZXNzYWdlIGlzIE5vbmUgb3IgaXNp
bnN0YW5jZShtZXNzYWdlLCBiYXNlc3RyaW5nKSwgXAogICAgICAgICAgICAgImludmFsaWQgbWVz
c2FnZSBhcmd1bWVudCAlciIgJSBtZXNzYWdlCiAgICAgICAgIGRpcmVjdGlvbiA9IChmb3J3YXJk
IGFuZCAnZm9yd2FyZCcpIG9yICdyZXZlcnNlJwpAQCAtMTM4NCw4ICsxMzg0LDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvX2ZpbGU9c2VsZi5vdXRmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd190aW1lem9uZT10aW1lem9uZSkKIAotICAgICAgICBzaG93X2xvZyhi
LAotICAgICAgICAgICAgICAgICBsZiwKKyAgICAgICAgbGYuc2hvd19sb2coYiwKICAgICAgICAg
ICAgICAgICAgZmlsZV9pZCwKICAgICAgICAgICAgICAgICAgdmVyYm9zZT12ZXJib3NlLAogICAg
ICAgICAgICAgICAgICBkaXJlY3Rpb249ZGlyZWN0aW9uLApAQCAtMjY2MSw3ICsyNjYwLDcgQEAK
ICAgICBkZWYgcnVuKHNlbGYsIGxvY2F0aW9uPU5vbmUsCiAgICAgICAgICAgICBkcnlfcnVuPUZh
bHNlLCB2ZXJib3NlPUZhbHNlLAogICAgICAgICAgICAgcmV2aXNpb249Tm9uZSwgZm9yY2U9RmFs
c2UpOgotICAgICAgICBmcm9tIGJ6cmxpYi5sb2cgaW1wb3J0IGxvZ19mb3JtYXR0ZXIsIHNob3df
bG9nCisgICAgICAgIGZyb20gYnpybGliLmxvZyBpbXBvcnQgbG9nX2Zvcm1hdHRlcgogICAgICAg
ICBpbXBvcnQgc3lzCiAgICAgICAgIGZyb20gYnpybGliLnVuY29tbWl0IGltcG9ydCB1bmNvbW1p
dAogCkBAIC0yNjk2LDggKzI2OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9f
ZmlsZT1zZWxmLm91dGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3RpbWV6b25l
PSdvcmlnaW5hbCcpCiAKLSAgICAgICAgc2hvd19sb2coYiwKLSAgICAgICAgICAgICAgICAgbGYs
CisgICAgICAgIGxmLnNob3dfbG9nKGIsCiAgICAgICAgICAgICAgICAgIHZlcmJvc2U9RmFsc2Us
CiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0nZm9yd2FyZCcsCiAgICAgICAgICAgICAgICAg
IHN0YXJ0X3JldmlzaW9uPXJldm5vLAoK
=== modified file bzrlib/log.py // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTU3LDYgKzU3LDkgQEAKIGlt
cG9ydCBienJsaWIuZXJyb3JzIGFzIGVycm9ycwogZnJvbSBienJsaWIudHJhY2UgaW1wb3J0IG11
dHRlcgogZnJvbSBienJsaWIudHNvcnQgaW1wb3J0IG1lcmdlX3NvcnQKK2Zyb20gYnpybGliLnN5
bWJvbF92ZXJzaW9uaW5nIGltcG9ydCAoZGVwcmVjYXRlZF9mdW5jdGlvbiwKKyAgICAgICAgICAg
IHplcm9fZWxldmVuLAorICAgICAgICAgICAgKQogCiAKIGRlZiBmaW5kX3RvdWNoaW5nX3Jldmlz
aW9ucyhicmFuY2gsIGZpbGVfaWQpOgpAQCAtMTEzLDE0OCArMTE2LDYgQEAKICAgICByZXR1cm4g
cmgKIAogCi1kZWYgc2hvd19sb2coYnJhbmNoLAotICAgICAgICAgICAgIGxmLAotICAgICAgICAg
ICAgIHNwZWNpZmljX2ZpbGVpZD1Ob25lLAotICAgICAgICAgICAgIHZlcmJvc2U9RmFsc2UsCi0g
ICAgICAgICAgICAgZGlyZWN0aW9uPSdyZXZlcnNlJywKLSAgICAgICAgICAgICBzdGFydF9yZXZp
c2lvbj1Ob25lLAotICAgICAgICAgICAgIGVuZF9yZXZpc2lvbj1Ob25lLAotICAgICAgICAgICAg
IHNlYXJjaD1Ob25lKToKLSAgICAiIiJXcml0ZSBvdXQgaHVtYW4tcmVhZGFibGUgbG9nIG9mIGNv
bW1pdHMgdG8gdGhpcyBicmFuY2guCi0KLSAgICBsZgotICAgICAgICBMb2dGb3JtYXR0ZXIgb2Jq
ZWN0IHRvIHNob3cgdGhlIG91dHB1dC4KLQotICAgIHNwZWNpZmljX2ZpbGVpZAotICAgICAgICBJ
ZiB0cnVlLCBsaXN0IG9ubHkgdGhlIGNvbW1pdHMgYWZmZWN0aW5nIHRoZSBzcGVjaWZpZWQKLSAg
ICAgICAgZmlsZSwgcmF0aGVyIHRoYW4gYWxsIGNvbW1pdHMuCi0KLSAgICB2ZXJib3NlCi0gICAg
ICAgIElmIHRydWUgc2hvdyBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQvcmVuYW1lZCBmaWxlcy4KLQot
ICAgIGRpcmVjdGlvbgotICAgICAgICAncmV2ZXJzZScgKGRlZmF1bHQpIGlzIGxhdGVzdCB0byBl
YXJsaWVzdDsKLSAgICAgICAgJ2ZvcndhcmQnIGlzIGVhcmxpZXN0IHRvIGxhdGVzdC4KLQotICAg
IHN0YXJ0X3JldmlzaW9uCi0gICAgICAgIElmIG5vdCBOb25lLCBvbmx5IHNob3cgcmV2aXNpb25z
ID49IHN0YXJ0X3JldmlzaW9uCi0KLSAgICBlbmRfcmV2aXNpb24KLSAgICAgICAgSWYgbm90IE5v
bmUsIG9ubHkgc2hvdyByZXZpc2lvbnMgPD0gZW5kX3JldmlzaW9uCi0gICAgIiIiCi0gICAgYnJh
bmNoLmxvY2tfcmVhZCgpCi0gICAgdHJ5OgotICAgICAgICBfc2hvd19sb2coYnJhbmNoLCBsZiwg
c3BlY2lmaWNfZmlsZWlkLCB2ZXJib3NlLCBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICBz
dGFydF9yZXZpc2lvbiwgZW5kX3JldmlzaW9uLCBzZWFyY2gpCi0gICAgZmluYWxseToKLSAgICAg
ICAgYnJhbmNoLnVubG9jaygpCi0gICAgCi1kZWYgX3Nob3dfbG9nKGJyYW5jaCwKLSAgICAgICAg
ICAgICBsZiwKLSAgICAgICAgICAgICBzcGVjaWZpY19maWxlaWQ9Tm9uZSwKLSAgICAgICAgICAg
ICB2ZXJib3NlPUZhbHNlLAotICAgICAgICAgICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScsCi0gICAg
ICAgICAgICAgc3RhcnRfcmV2aXNpb249Tm9uZSwKLSAgICAgICAgICAgICBlbmRfcmV2aXNpb249
Tm9uZSwKLSAgICAgICAgICAgICBzZWFyY2g9Tm9uZSk6Ci0gICAgIiIiV29ya2VyIGZ1bmN0aW9u
IGZvciBzaG93X2xvZyAtIHNlZSBzaG93X2xvZy4iIiIKLSAgICBmcm9tIGJ6cmxpYi5vc3V0aWxz
IGltcG9ydCBmb3JtYXRfZGF0ZQotICAgIGZyb20gYnpybGliLmVycm9ycyBpbXBvcnQgQnpyQ2hl
Y2tFcnJvcgotICAgIAotICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KLQotICAgIGlmIG5v
dCBpc2luc3RhbmNlKGxmLCBMb2dGb3JtYXR0ZXIpOgotICAgICAgICB3YXJuKCJub3QgYSBMb2dG
b3JtYXR0ZXIgaW5zdGFuY2U6ICVyIiAlIGxmKQotCi0gICAgaWYgc3BlY2lmaWNfZmlsZWlkOgot
ICAgICAgICBtdXR0ZXIoJ2dldCBsb2cgZm9yIGZpbGVfaWQgJXInLCBzcGVjaWZpY19maWxlaWQp
Ci0KLSAgICBpZiBzZWFyY2ggaXMgbm90IE5vbmU6Ci0gICAgICAgIGltcG9ydCByZQotICAgICAg
ICBzZWFyY2hSRSA9IHJlLmNvbXBpbGUoc2VhcmNoLCByZS5JR05PUkVDQVNFKQotICAgIGVsc2U6
Ci0gICAgICAgIHNlYXJjaFJFID0gTm9uZQotCi0gICAgd2hpY2hfcmV2cyA9IF9lbnVtZXJhdGVf
aGlzdG9yeShicmFuY2gpCi0gICAgCi0gICAgaWYgc3RhcnRfcmV2aXNpb24gaXMgTm9uZToKLSAg
ICAgICAgc3RhcnRfcmV2aXNpb24gPSAxCi0gICAgZWxzZToKLSAgICAgICAgYnJhbmNoLmNoZWNr
X3JlYWxfcmV2bm8oc3RhcnRfcmV2aXNpb24pCi0gICAgCi0gICAgaWYgZW5kX3JldmlzaW9uIGlz
IE5vbmU6Ci0gICAgICAgIGVuZF9yZXZpc2lvbiA9IGxlbih3aGljaF9yZXZzKQotICAgIGVsc2U6
Ci0gICAgICAgIGJyYW5jaC5jaGVja19yZWFsX3Jldm5vKGVuZF9yZXZpc2lvbikKLQotICAgICMg
bGlzdCBpbmRleGVzIGFyZSAwLWJhc2VkOyByZXZpc2lvbnMgYXJlIDEtYmFzZWQKLSAgICBjdXRf
cmV2cyA9IHdoaWNoX3JldnNbKHN0YXJ0X3JldmlzaW9uLTEpOihlbmRfcmV2aXNpb24pXQotICAg
IGlmIG5vdCBjdXRfcmV2czoKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIGNvbnZlcnQgdGhlIHJl
dmlzaW9uIGhpc3RvcnkgdG8gYSBkaWN0aW9uYXJ5OgotICAgIHJldl9ub3MgPSBkaWN0KChrLCB2
KSBmb3IgdiwgayBpbiBjdXRfcmV2cykKLQotICAgICMgb3ZlcnJpZGUgdGhlIG1haW5saW5lIHRv
IGxvb2sgbGlrZSB0aGUgcmV2aXNpb24gaGlzdG9yeS4KLSAgICBtYWlubGluZV9yZXZzID0gW3Jl
dmlzaW9uX2lkIGZvciBpbmRleCwgcmV2aXNpb25faWQgaW4gY3V0X3JldnNdCi0gICAgaWYgY3V0
X3JldnNbMF1bMF0gPT0gMToKLSAgICAgICAgbWFpbmxpbmVfcmV2cy5pbnNlcnQoMCwgTm9uZSkK
LSAgICBlbHNlOgotICAgICAgICBtYWlubGluZV9yZXZzLmluc2VydCgwLCB3aGljaF9yZXZzW3N0
YXJ0X3JldmlzaW9uLTJdWzFdKQotICAgIGlmIGdldGF0dHIobGYsICdzaG93X21lcmdlJywgTm9u
ZSkgaXMgbm90IE5vbmU6Ci0gICAgICAgIGluY2x1ZGVfbWVyZ2VzID0gVHJ1ZSAKLSAgICBlbHNl
OgotICAgICAgICBpbmNsdWRlX21lcmdlcyA9IEZhbHNlIAotICAgIHZpZXdfcmV2aXNpb25zID0g
bGlzdChnZXRfdmlld19yZXZpc2lvbnMobWFpbmxpbmVfcmV2cywgcmV2X25vcywgYnJhbmNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24sIGluY2x1ZGVfbWVyZ2VzPWluY2x1
ZGVfbWVyZ2VzKSkKLQotICAgIGRlZiBpdGVyX3JldmlzaW9ucygpOgotICAgICAgICAjIHIgPSBy
ZXZpc2lvbiwgbiA9IHJldm5vLCBkID0gbWVyZ2UgZGVwdGgKLSAgICAgICAgcmV2aXNpb25faWRz
ID0gW3IgZm9yIHIsIG4sIGQgaW4gdmlld19yZXZpc2lvbnNdCi0gICAgICAgIHplcm9zID0gc2V0
KHIgZm9yIHIsIG4sIGQgaW4gdmlld19yZXZpc2lvbnMgaWYgZCA9PSAwKQotICAgICAgICBudW0g
PSA5Ci0gICAgICAgIHJlcG9zaXRvcnkgPSBicmFuY2gucmVwb3NpdG9yeQotICAgICAgICB3aGls
ZSByZXZpc2lvbl9pZHM6Ci0gICAgICAgICAgICBjdXJfZGVsdGFzID0ge30KLSAgICAgICAgICAg
IHJldmlzaW9ucyA9IHJlcG9zaXRvcnkuZ2V0X3JldmlzaW9ucyhyZXZpc2lvbl9pZHNbOm51bV0p
Ci0gICAgICAgICAgICBpZiB2ZXJib3NlIG9yIHNwZWNpZmljX2ZpbGVpZDoKLSAgICAgICAgICAg
ICAgICBkZWx0YV9yZXZpc2lvbnMgPSBbciBmb3IgciBpbiByZXZpc2lvbnMgaWYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yZXZpc2lvbl9pZCBpbiB6ZXJvc10KLSAgICAg
ICAgICAgICAgICBkZWx0YXMgPSByZXBvc2l0b3J5LmdldF9kZWx0YXNfZm9yX3JldmlzaW9ucyhk
ZWx0YV9yZXZpc2lvbnMpCi0gICAgICAgICAgICAgICAgY3VyX2RlbHRhcyA9IGRpY3QoaXppcCgo
ci5yZXZpc2lvbl9pZCBmb3IgciBpbiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWx0YV9yZXZpc2lvbnMpLCBkZWx0YXMpKQotICAgICAgICAgICAgZm9yIHJldmlz
aW9uIGluIHJldmlzaW9uczoKLSAgICAgICAgICAgICAgICAjIFRoZSBkZWx0YSB2YWx1ZSB3aWxs
IGJlIE5vbmUgdW5sZXNzCi0gICAgICAgICAgICAgICAgIyAxLiB2ZXJib3NlIG9yIHNwZWNpZmlj
X2ZpbGVpZCBpcyBzcGVjaWZpZWQsIGFuZAotICAgICAgICAgICAgICAgICMgMi4gdGhlIHJldmlz
aW9uIGlzIGEgbWFpbmxpbmUgcmV2aXNpb24KLSAgICAgICAgICAgICAgICB5aWVsZCByZXZpc2lv
biwgY3VyX2RlbHRhcy5nZXQocmV2aXNpb24ucmV2aXNpb25faWQpCi0gICAgICAgICAgICByZXZp
c2lvbl9pZHMgID0gcmV2aXNpb25faWRzW251bTpdCi0gICAgICAgICAgICBudW0gPSBpbnQobnVt
ICogMS41KQotICAgICAgICAgICAgCi0gICAgIyBub3cgd2UganVzdCBwcmludCBhbGwgdGhlIHJl
dmlzaW9ucwotICAgIGZvciAoKHJldl9pZCwgcmV2bm8sIG1lcmdlX2RlcHRoKSwgKHJldiwgZGVs
dGEpKSBpbiBcCi0gICAgICAgICBpemlwKHZpZXdfcmV2aXNpb25zLCBpdGVyX3JldmlzaW9ucygp
KToKLQotICAgICAgICBpZiBzZWFyY2hSRToKLSAgICAgICAgICAgIGlmIG5vdCBzZWFyY2hSRS5z
ZWFyY2gocmV2Lm1lc3NhZ2UpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
aWYgbWVyZ2VfZGVwdGggPT0gMDoKLSAgICAgICAgICAgICMgYSBtYWlubGluZSByZXZpc2lvbi4K
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIHNwZWNpZmljX2ZpbGVpZDoKLSAgICAg
ICAgICAgICAgICBpZiBub3QgZGVsdGEudG91Y2hlc19maWxlX2lkKHNwZWNpZmljX2ZpbGVpZCk6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgCi0gICAgICAgICAgICBpZiBub3Qg
dmVyYm9zZToKLSAgICAgICAgICAgICAgICAjIGFsdGhvdWdoIHdlIGNhbGN1bGF0ZWQgaXQsIHRo
cm93IGl0IGF3YXkgd2l0aG91dCBkaXNwbGF5Ci0gICAgICAgICAgICAgICAgZGVsdGEgPSBOb25l
Ci0KLSAgICAgICAgICAgIGxmLnNob3cocmV2bm8sIHJldiwgZGVsdGEpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBsZi5zaG93X21lcmdlKHJldiwgbWVyZ2VfZGVwdGgpCi0KIAogZGVmIGdl
dF92aWV3X3JldmlzaW9ucyhtYWlubGluZV9yZXZzLCByZXZfbm9zLCBicmFuY2gsIGRpcmVjdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9tZXJnZXM9VHJ1ZSk6CkBAIC0zMDks
NiArMTcwLDQxIEBACiAgICAgICAgIHJlc3VsdC5leHRlbmQoY2h1bmspCiAgICAgcmV0dXJuIHJl
c3VsdAogCitAZGVwcmVjYXRlZF9mdW5jdGlvbih6ZXJvX2VsZXZlbikKK2RlZiBzaG93X2xvZyhi
cmFuY2gsCisgICAgICAgICAgICAgbGYsCisgICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkPU5v
bmUsCisgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKKyAgICAgICAgICAgICBkaXJlY3Rpb249
J3JldmVyc2UnLAorICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPU5vbmUsCisgICAgICAgICAg
ICAgZW5kX3JldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgc2VhcmNoPU5vbmUpOgorICAgICIi
IldyaXRlIG91dCBodW1hbi1yZWFkYWJsZSBsb2cgb2YgY29tbWl0cyB0byB0aGlzIGJyYW5jaC4K
KworICAgIERFUFJFQ0FURUQ6IHVzZSBsZi5zaG93X2xvZygpIGluc3RlYWQuCisKKyAgICBsZgor
ICAgICAgICBUaGUgTG9nRm9ybWF0dGVyIHRvIHVzZS4KKworICAgIHNwZWNpZmljX2ZpbGVpZAor
ICAgICAgICBJZiB0cnVlLCBsaXN0IG9ubHkgdGhlIGNvbW1pdHMgYWZmZWN0aW5nIHRoZSBzcGVj
aWZpZWQKKyAgICAgICAgZmlsZSwgcmF0aGVyIHRoYW4gYWxsIGNvbW1pdHMuCisKKyAgICB2ZXJi
b3NlCisgICAgICAgIElmIHRydWUgc2hvdyBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQvcmVuYW1lZCBm
aWxlcy4KKworICAgIGRpcmVjdGlvbgorICAgICAgICAncmV2ZXJzZScgKGRlZmF1bHQpIGlzIGxh
dGVzdCB0byBlYXJsaWVzdDsKKyAgICAgICAgJ2ZvcndhcmQnIGlzIGVhcmxpZXN0IHRvIGxhdGVz
dC4KKworICAgIHN0YXJ0X3JldmlzaW9uCisgICAgICAgIElmIG5vdCBOb25lLCBvbmx5IHNob3cg
cmV2aXNpb25zID49IHN0YXJ0X3JldmlzaW9uCisKKyAgICBlbmRfcmV2aXNpb24KKyAgICAgICAg
SWYgbm90IE5vbmUsIG9ubHkgc2hvdyByZXZpc2lvbnMgPD0gZW5kX3JldmlzaW9uCisgICAgIiIi
CisKKwogCiBjbGFzcyBMb2dGb3JtYXR0ZXIob2JqZWN0KToKICAgICAiIiJBYnN0cmFjdCBjbGFz
cyB0byBkaXNwbGF5IGxvZyBtZXNzYWdlcy4iIiIKQEAgLTMyNCw2ICsyMjAsMTQ5IEBACiAgICAg
ZGVmIHNob3J0X2NvbW1pdHRlcihzZWxmLCByZXYpOgogICAgICAgICByZXR1cm4gcmUuc3ViKCc8
LipALio+JywgJycsIHJldi5jb21taXR0ZXIpLnN0cmlwKCcgJykKICAgICAKKyAgICBkZWYgc2hv
d19sb2coc2VsZiwKKyAgICAgICAgICAgICAgICAgYnJhbmNoLAorICAgICAgICAgICAgICAgICBz
cGVjaWZpY19maWxlaWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgZGlyZWN0aW9uPSdyZXZlcnNlJywKKyAgICAgICAgICAgICAgICAgc3Rh
cnRfcmV2aXNpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgZW5kX3JldmlzaW9uPU5vbmUsCisg
ICAgICAgICAgICAgICAgIHNlYXJjaD1Ob25lKToKKyAgICAgICAgIiIiV3JpdGUgb3V0IGh1bWFu
LXJlYWRhYmxlIGxvZyBvZiBjb21taXRzIHRvIHRoaXMgYnJhbmNoLgorCisgICAgICAgIHNwZWNp
ZmljX2ZpbGVpZAorICAgICAgICAgICAgSWYgdHJ1ZSwgbGlzdCBvbmx5IHRoZSBjb21taXRzIGFm
ZmVjdGluZyB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICBmaWxlLCByYXRoZXIgdGhhbiBhbGwg
Y29tbWl0cy4KKworICAgICAgICB2ZXJib3NlCisgICAgICAgICAgICBJZiB0cnVlIHNob3cgYWRk
ZWQvY2hhbmdlZC9kZWxldGVkL3JlbmFtZWQgZmlsZXMuCisKKyAgICAgICAgZGlyZWN0aW9uCisg
ICAgICAgICAgICAncmV2ZXJzZScgKGRlZmF1bHQpIGlzIGxhdGVzdCB0byBlYXJsaWVzdDsKKyAg
ICAgICAgICAgICdmb3J3YXJkJyBpcyBlYXJsaWVzdCB0byBsYXRlc3QuCisKKyAgICAgICAgc3Rh
cnRfcmV2aXNpb24KKyAgICAgICAgICAgIElmIG5vdCBOb25lLCBvbmx5IHNob3cgcmV2aXNpb25z
ID49IHN0YXJ0X3JldmlzaW9uCisKKyAgICAgICAgZW5kX3JldmlzaW9uCisgICAgICAgICAgICBJ
ZiBub3QgTm9uZSwgb25seSBzaG93IHJldmlzaW9ucyA8PSBlbmRfcmV2aXNpb24KKyAgICAgICAg
IiIiCisgICAgICAgIGJyYW5jaC5sb2NrX3JlYWQoKQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9zaG93X2xvZyhicmFuY2gsIHNwZWNpZmljX2ZpbGVpZCwgdmVyYm9zZSwgZGlyZWN0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uLCBlbmRfcmV2aXNpb24s
IHNlYXJjaCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJyYW5jaC51bmxvY2soKQor
ICAgICAgICAKKyAgICBkZWYgX3Nob3dfbG9nKHNlbGYsCisgICAgICAgICAgICAgICAgIGJyYW5j
aCwKKyAgICAgICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkPU5vbmUsCisgICAgICAgICAgICAg
ICAgIHZlcmJvc2U9RmFsc2UsCisgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj0ncmV2ZXJzZScs
CisgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgICAg
IGVuZF9yZXZpc2lvbj1Ob25lLAorICAgICAgICAgICAgICAgICBzZWFyY2g9Tm9uZSk6CisgICAg
ICAgICIiIldvcmtlciBmdW5jdGlvbiBmb3Igc2hvd19sb2cgLSBzZWUgc2hvd19sb2cuIiIiCisg
ICAgICAgIGZyb20gYnpybGliLm9zdXRpbHMgaW1wb3J0IGZvcm1hdF9kYXRlCisgICAgICAgIGZy
b20gYnpybGliLmVycm9ycyBpbXBvcnQgQnpyQ2hlY2tFcnJvcgorICAgICAgICAKKyAgICAgICAg
ZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgorCisgICAgICAgIGlmIHNwZWNpZmljX2ZpbGVpZDoK
KyAgICAgICAgICAgIG11dHRlcignZ2V0IGxvZyBmb3IgZmlsZV9pZCAlcicsIHNwZWNpZmljX2Zp
bGVpZCkKKworICAgICAgICBzZWxmLmRpcmVjdGlvbiA9IGRpcmVjdGlvbgorICAgICAgICBzZWxm
LnNwZWNpZmljX2ZpbGVpZCA9IHNwZWNpZmljX2ZpbGVpZAorICAgICAgICBzZWxmLmJyYW5jaCA9
IGJyYW5jaAorCisgICAgICAgIGlmIHNlYXJjaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlt
cG9ydCByZQorICAgICAgICAgICAgc2VhcmNoUkUgPSByZS5jb21waWxlKHNlYXJjaCwgcmUuSUdO
T1JFQ0FTRSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlYXJjaFJFID0gTm9uZQorCisg
ICAgICAgIHdoaWNoX3JldnMgPSBfZW51bWVyYXRlX2hpc3RvcnkoYnJhbmNoKQorICAgICAgICAK
KyAgICAgICAgaWYgc3RhcnRfcmV2aXNpb24gaXMgTm9uZToKKyAgICAgICAgICAgIHN0YXJ0X3Jl
dmlzaW9uID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJhbmNoLmNoZWNrX3JlYWxf
cmV2bm8oc3RhcnRfcmV2aXNpb24pCisgICAgICAgIHNlbGYuc3RhcnRfcmV2aXNpb24gPSBzdGFy
dF9yZXZpc2lvbgorICAgICAgICAKKyAgICAgICAgaWYgZW5kX3JldmlzaW9uIGlzIE5vbmU6Cisg
ICAgICAgICAgICBlbmRfcmV2aXNpb24gPSBsZW4od2hpY2hfcmV2cykKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGJyYW5jaC5jaGVja19yZWFsX3Jldm5vKGVuZF9yZXZpc2lvbikKKyAgICAg
ICAgc2VsZi5lbmRfcmV2aXNpb24gPSBlbmRfcmV2aXNpb24KKworICAgICAgICAjIGxpc3QgaW5k
ZXhlcyBhcmUgMC1iYXNlZDsgcmV2aXNpb25zIGFyZSAxLWJhc2VkCisgICAgICAgIGN1dF9yZXZz
ID0gd2hpY2hfcmV2c1soc3RhcnRfcmV2aXNpb24tMSk6KGVuZF9yZXZpc2lvbildCisgICAgICAg
IGlmIG5vdCBjdXRfcmV2czoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgY29udmVy
dCB0aGUgcmV2aXNpb24gaGlzdG9yeSB0byBhIGRpY3Rpb25hcnk6CisgICAgICAgIHJldl9ub3Mg
PSBkaWN0KChrLCB2KSBmb3IgdiwgayBpbiBjdXRfcmV2cykKKworICAgICAgICAjIG92ZXJyaWRl
IHRoZSBtYWlubGluZSB0byBsb29rIGxpa2UgdGhlIHJldmlzaW9uIGhpc3RvcnkuCisgICAgICAg
IG1haW5saW5lX3JldnMgPSBbcmV2aXNpb25faWQgZm9yIGluZGV4LCByZXZpc2lvbl9pZCBpbiBj
dXRfcmV2c10KKyAgICAgICAgaWYgY3V0X3JldnNbMF1bMF0gPT0gMToKKyAgICAgICAgICAgIG1h
aW5saW5lX3JldnMuaW5zZXJ0KDAsIE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBt
YWlubGluZV9yZXZzLmluc2VydCgwLCB3aGljaF9yZXZzW3N0YXJ0X3JldmlzaW9uLTJdWzFdKQor
ICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdzaG93X21lcmdlJywgTm9uZSkgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBpbmNsdWRlX21lcmdlcyA9IFRydWUgCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBpbmNsdWRlX21lcmdlcyA9IEZhbHNlIAorICAgICAgICB2aWV3X3JldmlzaW9ucyA9
IGxpc3QoZ2V0X3ZpZXdfcmV2aXNpb25zKG1haW5saW5lX3JldnMsIHJldl9ub3MsIGJyYW5jaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiwgaW5jbHVkZV9tZXJnZXM9
aW5jbHVkZV9tZXJnZXMpKQorCisgICAgICAgIGRlZiBpdGVyX3JldmlzaW9ucygpOgorICAgICAg
ICAgICAgIyByID0gcmV2aXNpb24sIG4gPSByZXZubywgZCA9IG1lcmdlIGRlcHRoCisgICAgICAg
ICAgICByZXZpc2lvbl9pZHMgPSBbciBmb3IgciwgbiwgZCBpbiB2aWV3X3JldmlzaW9uc10KKyAg
ICAgICAgICAgIHplcm9zID0gc2V0KHIgZm9yIHIsIG4sIGQgaW4gdmlld19yZXZpc2lvbnMgaWYg
ZCA9PSAwKQorICAgICAgICAgICAgbnVtID0gOQorICAgICAgICAgICAgcmVwb3NpdG9yeSA9IGJy
YW5jaC5yZXBvc2l0b3J5CisgICAgICAgICAgICBzZWxmLnJlcG9zaXRvcnkgPSByZXBvc2l0b3J5
CisgICAgICAgICAgICB3aGlsZSByZXZpc2lvbl9pZHM6CisgICAgICAgICAgICAgICAgY3VyX2Rl
bHRhcyA9IHt9CisgICAgICAgICAgICAgICAgcmV2aXNpb25zID0gcmVwb3NpdG9yeS5nZXRfcmV2
aXNpb25zKHJldmlzaW9uX2lkc1s6bnVtXSkKKyAgICAgICAgICAgICAgICBpZiB2ZXJib3NlIG9y
IHNwZWNpZmljX2ZpbGVpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVsdGFfcmV2aXNpb25zID0g
W3IgZm9yIHIgaW4gcmV2aXNpb25zIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByLnJldmlzaW9uX2lkIGluIHplcm9zXQorICAgICAgICAgICAgICAgICAgICBkZWx0
YXMgPSByZXBvc2l0b3J5LmdldF9kZWx0YXNfZm9yX3JldmlzaW9ucyhkZWx0YV9yZXZpc2lvbnMp
CisgICAgICAgICAgICAgICAgICAgIGN1cl9kZWx0YXMgPSBkaWN0KGl6aXAoKHIucmV2aXNpb25f
aWQgZm9yIHIgaW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlbHRhX3JldmlzaW9ucyksIGRlbHRhcykpCisgICAgICAgICAgICAgICAgZm9yIHJldmlzaW9u
IGluIHJldmlzaW9uczoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgZGVsdGEgdmFsdWUgd2ls
bCBiZSBOb25lIHVubGVzcworICAgICAgICAgICAgICAgICAgICAjIDEuIHZlcmJvc2Ugb3Igc3Bl
Y2lmaWNfZmlsZWlkIGlzIHNwZWNpZmllZCwgYW5kCisgICAgICAgICAgICAgICAgICAgICMgMi4g
dGhlIHJldmlzaW9uIGlzIGEgbWFpbmxpbmUgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAg
eWllbGQgcmV2aXNpb24sIGN1cl9kZWx0YXMuZ2V0KHJldmlzaW9uLnJldmlzaW9uX2lkKQorICAg
ICAgICAgICAgICAgIHJldmlzaW9uX2lkcyAgPSByZXZpc2lvbl9pZHNbbnVtOl0KKyAgICAgICAg
ICAgICAgICBudW0gPSBpbnQobnVtICogMS41KQorICAgICAgICAKKyAgICAgICAgIyBub3cgd2Ug
anVzdCBwcmludCBhbGwgdGhlIHJldmlzaW9ucworICAgICAgICBmb3IgKChyZXZfaWQsIHJldm5v
LCBtZXJnZV9kZXB0aCksIChyZXYsIGRlbHRhKSkgaW4gXAorICAgICAgICAgICAgIGl6aXAodmll
d19yZXZpc2lvbnMsIGl0ZXJfcmV2aXNpb25zKCkpOgorCisgICAgICAgICAgICBpZiBzZWFyY2hS
RToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VhcmNoUkUuc2VhcmNoKHJldi5tZXNzYWdlKToK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgbWVyZ2VfZGVw
dGggPT0gMDoKKyAgICAgICAgICAgICAgICAjIGEgbWFpbmxpbmUgcmV2aXNpb24uCisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIHNwZWNpZmljX2ZpbGVpZDoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgbm90IGRlbHRhLnRvdWNoZXNfZmlsZV9pZChzcGVjaWZpY19maWxl
aWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgbm90IHZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICMgYWx0aG91Z2gg
d2UgY2FsY3VsYXRlZCBpdCwgdGhyb3cgaXQgYXdheSB3aXRob3V0IGRpc3BsYXkKKyAgICAgICAg
ICAgICAgICAgICAgZGVsdGEgPSBOb25lCisKKyAgICAgICAgICAgICAgICBzZWxmLnNob3cocmV2
bm8sIHJldiwgZGVsdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu
c2hvd19tZXJnZShyZXYsIG1lcmdlX2RlcHRoKQorCiAgICAgCiBjbGFzcyBMb25nTG9nRm9ybWF0
dGVyKExvZ0Zvcm1hdHRlcik6CiAgICAgZGVmIHNob3coc2VsZiwgcmV2bm8sIHJldiwgZGVsdGEp
OgoK
=== modified file bzrlib/symbol_versioning.py // encoding:base64
LS0tIGJ6cmxpYi9zeW1ib2xfdmVyc2lvbmluZy5weQorKysgYnpybGliL3N5bWJvbF92ZXJzaW9u
aW5nLnB5CkBAIC0zOSw2ICszOSw3IEBACiB6ZXJvX2VpZ2h0ID0gIiVzIHdhcyBkZXByZWNhdGVk
IGluIHZlcnNpb24gMC44LiIKIHplcm9fbmluZSA9ICIlcyB3YXMgZGVwcmVjYXRlZCBpbiB2ZXJz
aW9uIDAuOS4iCiB6ZXJvX3RlbiA9ICIlcyB3YXMgZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDAuMTAu
IgoremVyb19lbGV2ZW4gPSAiJXMgd2FzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAwLjExLiIKIAog
CiBkZWYgc2V0X3dhcm5pbmdfbWV0aG9kKG1ldGhvZCk6Cgo=
=== modified file bzrlib/tests/test_log.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC0yMCw4ICsyMCw3IEBACiBmcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KIAogZnJv
bSBienJsaWIudGVzdHMgaW1wb3J0IEJ6clRlc3RCYXNlLCBUZXN0Q2FzZVdpdGhUcmFuc3BvcnQK
LWZyb20gYnpybGliLmxvZyBpbXBvcnQgKHNob3dfbG9nLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdldF92aWV3X3JldmlzaW9ucywgCitmcm9tIGJ6cmxpYi5sb2cgaW1wb3J0IChnZXRfdmll
d19yZXZpc2lvbnMsIAogICAgICAgICAgICAgICAgICAgICAgICAgTG9nRm9ybWF0dGVyLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgIExvbmdMb2dGb3JtYXR0ZXIsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgU2hvcnRMb2dGb3JtYXR0ZXIsIApAQCAtNzcsMTggKzc2LDE4IEBACiAKICAgICAg
ICAgbGYgPSBMb2dDYXRjaGVyKCkKICAgICAgICAgd3QuY29tbWl0KCdlbXB0eSBjb21taXQnKQot
ICAgICAgICBzaG93X2xvZyhiLCBsZiwgdmVyYm9zZT1UcnVlLCBzdGFydF9yZXZpc2lvbj0xLCBl
bmRfcmV2aXNpb249MSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9u
TnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIGxmLnNob3dfbG9nKGIsIHZlcmJvc2U9
VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTIsIGVuZF9yZXZpc2lvbj0xKSAKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywg
YiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwg
bGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9u
PTEsIGVuZF9yZXZpc2lvbj0yKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJl
dmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTAsIGVuZF9yZXZpc2lvbj0yKSAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19s
b2csIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTEsIGVuZF9y
ZXZpc2lvbj0wKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVt
YmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRS
ZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0X3JldmlzaW9uPS0xLCBlbmRfcmV2aXNpb249MSkgCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2hvd19sb2csIGIsIGxmLAorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3dfbG9nLCBiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLCBlbmRfcmV2aXNpb249
LTEpIAogCiAgICAgZGVmIHRlc3RfY3VyX3Jldm5vKHNlbGYpOgpAQCAtOTcsMTggKzk2LDE4IEBA
CiAKICAgICAgICAgbGYgPSBMb2dDYXRjaGVyKCkKICAgICAgICAgd3QuY29tbWl0KCdlbXB0eSBj
b21taXQnKQotICAgICAgICBzaG93X2xvZyhiLCBsZiwgdmVyYm9zZT1UcnVlLCBzdGFydF9yZXZp
c2lvbj0xLCBlbmRfcmV2aXNpb249MSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxp
ZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIGxmLnNob3dfbG9nKGIs
IHZlcmJvc2U9VHJ1ZSwgc3RhcnRfcmV2aXNpb249MSwgZW5kX3JldmlzaW9uPTEpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTIsIGVuZF9yZXZpc2lv
bj0xKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBz
aG93X2xvZywgYiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lv
bk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
X3JldmlzaW9uPTEsIGVuZF9yZXZpc2lvbj0yKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPTAsIGVuZF9yZXZpc2lvbj0yKSAKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJldmlzaW9uTnVtYmVyLCBzaG93X2xvZywg
YiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwg
bGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3JldmlzaW9u
PTEsIGVuZF9yZXZpc2lvbj0wKSAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFJl
dmlzaW9uTnVtYmVyLCBzaG93X2xvZywgYiwgbGYsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEludmFsaWRSZXZpc2lvbk51bWJlciwgbGYuc2hvd19sb2csIGIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0X3JldmlzaW9uPS0xLCBlbmRfcmV2aXNpb249MSkgCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEludmFsaWRSZXZpc2lvbk51bWJlciwgc2hvd19sb2csIGIsIGxmLAor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkUmV2aXNpb25OdW1iZXIsIGxmLnNob3df
bG9nLCBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9yZXZpc2lvbj0xLCBlbmRf
cmV2aXNpb249LTEpIAogCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2xvZyhzZWxmKToKQEAgLTExOCwx
MyArMTE3LDEzIEBACiAgICAgICAgIGIgPSB3dC5icmFuY2gKIAogICAgICAgICBsZiA9IExvZ0Nh
dGNoZXIoKQotICAgICAgICBzaG93X2xvZyhiLCBsZikKKyAgICAgICAgbGYuc2hvd19sb2coYikK
ICAgICAgICAgIyBubyBlbnRyaWVzIHlldAogICAgICAgICBlcShsZi5sb2dzLCBbXSkKIAogICAg
ICAgICB3dC5jb21taXQoJ2VtcHR5IGNvbW1pdCcpCiAgICAgICAgIGxmID0gTG9nQ2F0Y2hlcigp
Ci0gICAgICAgIHNob3dfbG9nKGIsIGxmLCB2ZXJib3NlPVRydWUpCisgICAgICAgIGxmLnNob3df
bG9nKGIsIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAgZXEobGVuKGxmLmxvZ3MpLCAxKQogICAgICAg
ICBlcShsZi5sb2dzWzBdLnJldm5vLCAxKQogICAgICAgICBlcShsZi5sb2dzWzBdLnJldi5tZXNz
YWdlLCAnZW1wdHkgY29tbWl0JykKQEAgLTEzOCwxNCArMTM3LDE0IEBACiAKICAgICAgICAgbGYg
PSBTdHJpbmdJTygpCiAgICAgICAgICMgbG9nIHVzaW5nIHJlZ3VsYXIgdGhpbmcKLSAgICAgICAg
c2hvd19sb2coYiwgTG9uZ0xvZ0Zvcm1hdHRlcihsZikpCisgICAgICAgIExvbmdMb2dGb3JtYXR0
ZXIobGYpLnNob3dfbG9nKGIpCiAgICAgICAgIGxmLnNlZWsoMCkKICAgICAgICAgZm9yIGwgaW4g
bGYucmVhZGxpbmVzKCk6CiAgICAgICAgICAgICBzZWxmLmxvZyhsKQogCiAgICAgICAgICMgZ2V0
IGxvZyBhcyBkYXRhIHN0cnVjdHVyZQogICAgICAgICBsZiA9IExvZ0NhdGNoZXIoKQotICAgICAg
ICBzaG93X2xvZyhiLCBsZiwgdmVyYm9zZT1UcnVlKQorICAgICAgICBsZi5zaG93X2xvZyhiLCB2
ZXJib3NlPVRydWUpCiAgICAgICAgIGVxKGxlbihsZi5sb2dzKSwgMikKICAgICAgICAgc2VsZi5s
b2coJ2xvZyBlbnRyaWVzOicpCiAgICAgICAgIGZvciBsb2dlbnRyeSBpbiBsZi5sb2dzOgpAQCAt
MTY0LDcgKzE2Myw3IEBACiAgICAgICAgIHNlbGYubG9nKCJvcmlnaW5hbCBjb21taXQgbWVzc2Fn
ZTogJXIiLCBtc2cpCiAgICAgICAgIHd0LmNvbW1pdChtc2cpCiAgICAgICAgIGxmID0gTG9nQ2F0
Y2hlcigpCi0gICAgICAgIHNob3dfbG9nKGIsIGxmLCB2ZXJib3NlPVRydWUpCisgICAgICAgIGxm
LnNob3dfbG9nKGIsIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAgY29tbWl0dGVkX21zZyA9IGxmLmxv
Z3NbMF0ucmV2Lm1lc3NhZ2UKICAgICAgICAgc2VsZi5sb2coImVzY2FwZWQgY29tbWl0IG1lc3Nh
Z2U6ICVyIiwgY29tbWl0dGVkX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRfKG1zZyAhPSBjb21t
aXR0ZWRfbXNnKQpAQCAtMTc5LDcgKzE3OCw3IEBACiAgICAgICAgIHNlbGYubG9nKCJvcmlnaW5h
bCBjb21taXQgbWVzc2FnZTogJXIiLCBtc2cpCiAgICAgICAgIHd0LmNvbW1pdChtc2cpCiAgICAg
ICAgIGxmID0gTG9nQ2F0Y2hlcigpCi0gICAgICAgIHNob3dfbG9nKGIsIGxmLCB2ZXJib3NlPVRy
dWUpCisgICAgICAgIGxmLnNob3dfbG9nKGIsIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAgY29tbWl0
dGVkX21zZyA9IGxmLmxvZ3NbMF0ucmV2Lm1lc3NhZ2UKICAgICAgICAgc2VsZi5sb2coImVzY2Fw
ZWQgY29tbWl0IG1lc3NhZ2U6ICVyIiwgY29tbWl0dGVkX21zZykKICAgICAgICAgc2VsZi5hc3Nl
cnRfKG1zZyA9PSBjb21taXR0ZWRfbXNnKQpAQCAtMjA3LDcgKzIwNiw3IEBACiAKICAgICAgICAg
c2lvID0gU3RyaW5nSU8oKQogICAgICAgICBsZiA9IFNob3J0TG9nRm9ybWF0dGVyKHRvX2ZpbGU9
c2lvKQotICAgICAgICBzaG93X2xvZyhiLCBsZikKKyAgICAgICAgbGYuc2hvd19sb2coYikKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2lvLmdldHZhbHVlKCksICIiIlwKICAgICAzIEpvZSBG
b29cdDIwMDUtMTEtMjEKICAgICAgIHNpbmdsZSBsaW5lIHdpdGggdHJhaWxpbmcgbmV3bGluZQpA
QCAtMjI0LDcgKzIyMyw3IEBACiAKICAgICAgICAgc2lvID0gU3RyaW5nSU8oKQogICAgICAgICBs
ZiA9IExvbmdMb2dGb3JtYXR0ZXIodG9fZmlsZT1zaW8pCi0gICAgICAgIHNob3dfbG9nKGIsIGxm
KQorICAgICAgICBsZi5zaG93X2xvZyhiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzaW8u
Z2V0dmFsdWUoKSwgIiIiXAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiByZXZubzogMwpAQCAtMjY4LDcgKzI2Nyw3IEBACiAgICAg
ICAgICAgICAgICAgICBjb21taXR0ZXI9J0xvcmVtIElwc3VtIDx0ZXN0QGV4YW1wbGUuY29tPicp
CiAgICAgICAgIGxvZ2ZpbGUgPSBmaWxlKCdvdXQudG1wJywgJ3crJykKICAgICAgICAgZm9ybWF0
dGVyID0gTG9uZ0xvZ0Zvcm1hdHRlcih0b19maWxlPWxvZ2ZpbGUpCi0gICAgICAgIHNob3dfbG9n
KGIsIGZvcm1hdHRlciwgdmVyYm9zZT1UcnVlKQorICAgICAgICBmb3JtYXR0ZXIuc2hvd19sb2co
YiwgdmVyYm9zZT1UcnVlKQogICAgICAgICBsb2dmaWxlLmZsdXNoKCkKICAgICAgICAgbG9nZmls
ZS5zZWVrKDApCiAgICAgICAgIGxvZ19jb250ZW50cyA9IGxvZ2ZpbGUucmVhZCgpCkBAIC0zMDAs
NyArMjk5LDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj0nTGluZS1Mb2ctRm9ybWF0
dGVyIFRlc3RlciA8dGVzdEBsaW5lLmxvZz4nKQogICAgICAgICBsb2dmaWxlID0gZmlsZSgnb3V0
LnRtcCcsICd3KycpCiAgICAgICAgIGZvcm1hdHRlciA9IExpbmVMb2dGb3JtYXR0ZXIodG9fZmls
ZT1sb2dmaWxlKQotICAgICAgICBzaG93X2xvZyhiLCBmb3JtYXR0ZXIpCisgICAgICAgIGZvcm1h
dHRlci5zaG93X2xvZyhiKQogICAgICAgICBsb2dmaWxlLmZsdXNoKCkKICAgICAgICAgbG9nZmls
ZS5zZWVrKDApCiAgICAgICAgIGxvZ19jb250ZW50cyA9IGxvZ2ZpbGUucmVhZCgpCgo=
# revision id: jw+debian at jameswestby.net-20060825203638-54ea67fe0c5a13c0
# sha1: 9325da3454fae8330f787a4c60d838feed40c5e3
# inventory sha1: 9c34af8c788e3d71afa9efb01f13988a0494a279
# parent ids:
# jw+debian at jameswestby.net-20060825202907-b925423ab7d77fe0
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Merge from bzr.dev
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-25 21:29:07.441999912 +0100
# revision id: jw+debian at jameswestby.net-20060825202907-b925423ab7d77fe0
# sha1: 4954d1ba07b0347eb44da11f5d764f17a6c83ff2
# inventory sha1: 293bdb2255c7e9a9f3ed74b4e582b6742741747c
# parent ids:
# jw+debian at jameswestby.net-20060811120353-fc692862492dda22
# jw+debian at jameswestby.net-20060825193653-d0b2583065322606
# properties:
# branch-nick: bzr.dev.jamew
# message:
# Merge from bzr.dev just after 0.9
# committer: James Westby <jw+debian at jameswestby.net>
# date: Fri 2006-08-11 13:03:53.479000092 +0100
# revision id: jw+debian at jameswestby.net-20060811120353-fc692862492dda22
# sha1: b4e055c79ea00e0a422813ac98eb6044d47347ae
# inventory sha1: b849a3ad8e9bdea1f2bedd6e1e1246001f97c980
# parent ids:
# pqm at pqm.ubuntu.com-20060729144556-473b3c46dfa061a7
# jw+debian at jameswestby.net-20060811120300-129af0e223e0d3a9
# properties:
# branch-nick: bzr.dev.jamew
More information about the bazaar
mailing list