[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