[MERGE] Convert tests.blackbox.test_[pull|nick] to use internals where appropriate

Daniel Watkins D.M.Watkins at warwick.ac.uk
Tue Aug 21 15:16:40 BST 2007


On Thu, 2007-08-16 at 09:45 -0400, Aaron Bentley wrote:
> Please use osutils.pathjoin, rather than string concatenation.
Done.

> assertEquals?  That works?  We use assertEqual.
It does, and is used fairly prevalently.  I've changed all the
occurences in test_pull.

> ^^^ The internal version of "merge" is WorkingTree.merge_from_branch()
Thanks, changed.

> ^^^ Please use WorkingTree.open().  It's more precise.
I couldn't get this to work, I've left it as is.  Where I'm using
WorkingTree.open_containing('.')[0], what should the equivalent
WorkingTree.open call be?

> ^^^ I think John pointed out that this breaks with spaces.
Fixed.

> +    def get_rh(self, tree, expected_len):
> +        # Make sure we don't have trailing empty revisions
> 
> ^^^ I think this comment is out of date.  But the whole function is
> questionable, since you're implicitly checking the length by comparing
> the revision history against an expected value.  So using
> tree.branch.revision_history probably makes sense.
I've completely removed this method and moved its functionality back to
where it was originally, as this is much clearer.

-- 
Daniel Watkins (Odd_Bloke) <D.M.Watkins at warwick.ac.uk>
University of Warwick Christian Focus President
University of Warwick Computing Society WUGLUG Liaison Officer
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.19)
# revision_id: d.m.watkins at warwick.ac.uk-20070821135255-\
#   tgicf49ud4jr7fk4
# target_branch: file:///home/daniel/devel/bzr/bzr.dev/
# testament_sha1: 27e5958cb6e08802cd39ac5bee6f0c057c80e65d
# timestamp: 2007-08-21 16:01:09 +0200
# base_revision_id: pqm at pqm.ubuntu.com-20070821044713-ttnupbvhlsbwh1he
# 
# Begin patch
=== modified file 'bzrlib/tests/blackbox/test_nick.py'
--- bzrlib/tests/blackbox/test_nick.py	2007-06-27 19:13:50 +0000
+++ bzrlib/tests/blackbox/test_nick.py	2007-08-08 01:56:29 +0000
@@ -26,9 +26,8 @@
 
     def test_nick_command(self):
         """bzr nick for viewing, setting nicknames"""
-        os.mkdir('me.dev')
+        self.make_branch_and_tree('me.dev')
         os.chdir('me.dev')
-        self.run_bzr('init')
         nick = self.run_bzr('nick')[0]
         self.assertEqual(nick, 'me.dev\n')
         # set the nickname
@@ -39,8 +38,7 @@
     def test_autonick_urlencoded(self):
         # https://bugs.launchpad.net/bzr/+bug/66857 -- nick was printed
         # urlencoded but shouldn't be
-        os.mkdir('!repo')
+        self.make_branch_and_tree('!repo')
         os.chdir('!repo')
-        self.run_bzr('init')
         nick = self.run_bzr('nick')[0]
         self.assertEqual(nick, '!repo\n')

=== modified file 'bzrlib/tests/blackbox/test_pull.py'
--- bzrlib/tests/blackbox/test_pull.py	2007-07-31 16:33:46 +0000
+++ bzrlib/tests/blackbox/test_pull.py	2007-08-21 13:52:55 +0000
@@ -21,28 +21,30 @@
 import sys
 
 from bzrlib.branch import Branch
+from bzrlib.osutils import pathjoin
 from bzrlib.tests.blackbox import ExternalBase
 from bzrlib.uncommit import uncommit
+from bzrlib.workingtree import WorkingTree
 from bzrlib import urlutils
 
 
 class TestPull(ExternalBase):
 
-    def example_branch(test):
-        test.run_bzr('init')
-        file('hello', 'wt').write('foo')
-        test.run_bzr('add hello')
-        test.run_bzr('commit -m setup hello')
-        file('goodbye', 'wt').write('baz')
-        test.run_bzr('add goodbye')
-        test.run_bzr('commit -m setup goodbye')
+    def example_branch(self, path='.'):
+        tree = self.make_branch_and_tree(path)
+        self.build_tree_contents([
+            (pathjoin(path, 'hello'),   'foo'),
+            (pathjoin(path, 'goodbye'), 'baz')])
+        tree.add('hello')
+        tree.commit(message='setup')
+        tree.add('goodbye')
+        tree.commit(message='setup')
+        return tree
 
     def test_pull(self):
         """Pull changes from one branch to another."""
-        os.mkdir('a')
+        a_tree = self.example_branch('a')
         os.chdir('a')
-
-        self.example_branch()
         self.run_bzr('pull', retcode=3)
         self.run_bzr('missing', retcode=3)
         self.run_bzr('missing .')
@@ -55,178 +57,153 @@
             self.run_bzr('pull')
 
         os.chdir('..')
-        self.run_bzr('branch a b')
+        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
         os.chdir('b')
         self.run_bzr('pull')
         os.mkdir('subdir')
-        self.run_bzr('add subdir')
-        self.run_bzr('commit -m blah --unchanged')
-        os.chdir('../a')
-        a = Branch.open('.')
-        b = Branch.open('../b')
-        self.assertEquals(a.revision_history(), b.revision_history()[:-1])
+        b_tree.add('subdir')
+        b_tree.commit(message='blah', allow_pointless=True)
+
+        os.chdir('..')
+        a = Branch.open('a')
+        b = Branch.open('b')
+        self.assertEqual(a.revision_history(), b.revision_history()[:-1])
+
+        os.chdir('a')
         self.run_bzr('pull ../b')
-        self.assertEquals(a.revision_history(), b.revision_history())
-        self.run_bzr('commit -m blah2 --unchanged')
-        os.chdir('../b')
-        self.run_bzr('commit -m blah3 --unchanged')
+        self.assertEqual(a.revision_history(), b.revision_history())
+        a_tree.commit(message='blah2', allow_pointless=True)
+        b_tree.commit(message='blah3', allow_pointless=True)
         # no overwrite
+        os.chdir('../b')
         self.run_bzr('pull ../a', retcode=3)
         os.chdir('..')
-        self.run_bzr('branch b overwriteme')
+        b_tree.bzrdir.sprout('overwriteme')
         os.chdir('overwriteme')
         self.run_bzr('pull --overwrite ../a')
         overwritten = Branch.open('.')
         self.assertEqual(overwritten.revision_history(),
                          a.revision_history())
-        os.chdir('../a')
-        self.run_bzr('merge ../b')
-        self.run_bzr('commit -m blah4 --unchanged')
+        a_tree.merge_from_branch(b_tree.branch)
+        a_tree.commit(message="blah4", allow_pointless=True)
         os.chdir('../b/subdir')
         self.run_bzr('pull ../../a')
-        self.assertEquals(a.revision_history()[-1], b.revision_history()[-1])
-        self.run_bzr('commit -m blah5 --unchanged')
-        self.run_bzr('commit -m blah6 --unchanged')
+        self.assertEqual(a.revision_history()[-1], b.revision_history()[-1])
+        sub_tree = WorkingTree.open_containing('.')[0]
+        sub_tree.commit(message="blah5", allow_pointless=True)
+        sub_tree.commit(message="blah6", allow_pointless=True)
         os.chdir('..')
         self.run_bzr('pull ../a')
         os.chdir('../a')
-        self.run_bzr('commit -m blah7 --unchanged')
-        self.run_bzr('merge ../b')
-        self.run_bzr('commit -m blah8 --unchanged')
+        a_tree.commit(message="blah7", allow_pointless=True)
+        a_tree.merge_from_branch(b_tree.branch)
+        a_tree.commit(message="blah8", allow_pointless=True)
         self.run_bzr('pull ../b')
         self.run_bzr('pull ../b')
 
     def test_pull_dash_d(self):
-        os.mkdir('a')
-        os.chdir('a')
-        self.example_branch()
-        self.run_bzr('init ../b')
-        self.run_bzr('init ../c')
+        self.example_branch('a')
+        self.make_branch_and_tree('b')
+        self.make_branch_and_tree('c')
         # pull into that branch
-        self.run_bzr('pull -d ../b .')
+        self.run_bzr('pull -d b a')
         # pull into a branch specified by a url
-        c_url = urlutils.local_path_to_url('../c')
+        c_url = urlutils.local_path_to_url('c')
         self.assertStartsWith(c_url, 'file://')
-        self.run_bzr('pull -d %s .' % c_url)
+        self.run_bzr(['pull', '-d', c_url, 'a'])
 
     def test_pull_revision(self):
         """Pull some changes from one branch to another."""
-        os.mkdir('a')
-        os.chdir('a')
-
-        self.example_branch()
-        file('hello2', 'wt').write('foo')
-        self.run_bzr('add hello2')
-        self.run_bzr('commit -m setup hello2')
-        file('goodbye2', 'wt').write('baz')
-        self.run_bzr('add goodbye2')
-        self.run_bzr('commit -m setup goodbye2')
-
-        os.chdir('..')
-        self.run_bzr('branch -r 1 a b')
+        a_tree = self.example_branch('a')
+        self.build_tree_contents([
+            ('a/hello2',   'foo'),
+            ('a/goodbye2', 'baz')])
+        a_tree.add('hello2')
+        a_tree.commit(message="setup")
+        a_tree.add('goodbye2')
+        a_tree.commit(message="setup")
+
+        b_tree = a_tree.bzrdir.sprout('b',
+                   revision_id=a_tree.branch.get_rev_id(1)).open_workingtree()
         os.chdir('b')
         self.run_bzr('pull -r 2')
         a = Branch.open('../a')
         b = Branch.open('.')
-        self.assertEquals(a.revno(),4)
-        self.assertEquals(b.revno(),2)
+        self.assertEqual(a.revno(),4)
+        self.assertEqual(b.revno(),2)
         self.run_bzr('pull -r 3')
-        self.assertEquals(b.revno(),3)
+        self.assertEqual(b.revno(),3)
         self.run_bzr('pull -r 4')
-        self.assertEquals(a.revision_history(), b.revision_history())
+        self.assertEqual(a.revision_history(), b.revision_history())
 
 
     def test_overwrite_uptodate(self):
         # Make sure pull --overwrite overwrites
         # even if the target branch has merged
         # everything already.
-        bzr = self.run_bzr
-
-        def get_rh(expected_len):
-            rh = self.run_bzr('revision-history')[0]
-            # Make sure we don't have trailing empty revisions
-            rh = rh.strip().split('\n')
-            self.assertEqual(len(rh), expected_len)
-            return rh
-
-        os.mkdir('a')
-        os.chdir('a')
-        bzr('init')
-        open('foo', 'wb').write('original\n')
-        bzr('add foo')
-        bzr(['commit', '-m', 'initial commit'])
-
-        os.chdir('..')
-        bzr('branch a b')
-
-        os.chdir('a')
-        open('foo', 'wb').write('changed\n')
-        bzr(['commit', '-m', 'later change'])
-
-        open('foo', 'wb').write('another\n')
-        bzr(['commit', '-m', 'a third change'])
-
-        rev_history_a = get_rh(3)
-
-        os.chdir('../b')
-        bzr('merge ../a')
-        bzr('commit -m merge')
-
-        rev_history_b = get_rh(2)
-
-        bzr('pull --overwrite ../a')
-        rev_history_b = get_rh(3)
+        a_tree = self.make_branch_and_tree('a')
+        self.build_tree_contents([('a/foo', 'original\n')])
+        a_tree.add('foo')
+        a_tree.commit(message='initial commit')
+
+        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
+
+        self.build_tree_contents([('a/foo', 'changed\n')])
+        a_tree.commit(message='later change')
+
+        self.build_tree_contents([('a/foo', 'a third change')])
+        a_tree.commit(message='a third change')
+
+        rev_history_a = a_tree.branch.revision_history()
+        self.assertEqual(len(rev_history_a), 3)
+
+        b_tree.merge_from_branch(a_tree.branch)
+        b_tree.commit(message='merge')
+
+        self.assertEqual(len(b_tree.branch.revision_history()), 2)
+
+        os.chdir('b')
+        self.run_bzr('pull --overwrite ../a')
+        rev_history_b = b_tree.branch.revision_history()
+        self.assertEqual(len(rev_history_b), 3)
 
         self.assertEqual(rev_history_b, rev_history_a)
 
     def test_overwrite_children(self):
         # Make sure pull --overwrite sets the revision-history
         # to be identical to the pull source, even if we have convergence
-        bzr = self.run_bzr
-
-        def get_rh(expected_len):
-            rh = self.run_bzr('revision-history')[0]
-            # Make sure we don't have trailing empty revisions
-            rh = rh.strip().split('\n')
-            self.assertEqual(len(rh), expected_len)
-            return rh
-
-        os.mkdir('a')
-        os.chdir('a')
-        bzr('init')
-        open('foo', 'wb').write('original\n')
-        bzr('add foo')
-        bzr(['commit', '-m', 'initial commit'])
-
-        os.chdir('..')
-        bzr('branch a b')
-
-        os.chdir('a')
-        open('foo', 'wb').write('changed\n')
-        bzr(['commit', '-m', 'later change'])
-
-        open('foo', 'wb').write('another\n')
-        bzr(['commit', '-m', 'a third change'])
-
-        rev_history_a = get_rh(3)
-
-        os.chdir('../b')
-        bzr('merge ../a')
-        bzr('commit -m merge')
-
-        rev_history_b = get_rh(2)
-
-        os.chdir('../a')
-        open('foo', 'wb').write('a fourth change\n')
-        bzr(['commit', '-m', 'a fourth change'])
-
-        rev_history_a = get_rh(4)
+        a_tree = self.make_branch_and_tree('a')
+        self.build_tree_contents([('a/foo', 'original\n')])
+        a_tree.add('foo')
+        a_tree.commit(message='initial commit')
+
+        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
+
+        self.build_tree_contents([('a/foo', 'changed\n')])
+        a_tree.commit(message='later change')
+
+        self.build_tree_contents([('a/foo', 'a third change')])
+        a_tree.commit(message='a third change')
+
+        self.assertEqual(len(a_tree.branch.revision_history()), 3)
+
+        b_tree.merge_from_branch(a_tree.branch)
+        b_tree.commit(message='merge')
+
+        self.assertEqual(len(b_tree.branch.revision_history()), 2)
+
+        self.build_tree_contents([('a/foo', 'a fourth change\n')])
+        a_tree.commit(message='a fourth change')
+
+        rev_history_a = a_tree.branch.revision_history()
+        self.assertEqual(len(rev_history_a), 4)
 
         # With convergence, we could just pull over the
         # new change, but with --overwrite, we want to switch our history
-        os.chdir('../b')
-        bzr('pull --overwrite ../a')
-        rev_history_b = get_rh(4)
+        os.chdir('b')
+        self.run_bzr('pull --overwrite ../a')
+        rev_history_b = b_tree.branch.revision_history()
+        self.assertEqual(len(rev_history_b), 4)
 
         self.assertEqual(rev_history_b, rev_history_a)
 
@@ -252,25 +229,25 @@
         # test pull for failure without parent set
         os.chdir('branch_b')
         out = self.run_bzr('pull', retcode=3)
-        self.assertEquals(out,
+        self.assertEqual(out,
                 ('','bzr: ERROR: No pull location known or specified.\n'))
         # test implicit --remember when no parent set, this pull conflicts
         self.build_tree(['d'])
         tree_b.add('d')
         tree_b.commit('commit d')
         out = self.run_bzr('pull ../branch_a', retcode=3)
-        self.assertEquals(out,
+        self.assertEqual(out,
                 ('','bzr: ERROR: These branches have diverged.'
                     ' Use the merge command to reconcile them.\n'))
-        self.assertEquals(branch_b.get_parent(), parent)
+        self.assertEqual(branch_b.get_parent(), parent)
         # test implicit --remember after resolving previous failure
         uncommit(branch=branch_b, tree=tree_b)
         transport.delete('branch_b/d')
         self.run_bzr('pull')
-        self.assertEquals(branch_b.get_parent(), parent)
+        self.assertEqual(branch_b.get_parent(), parent)
         # test explicit --remember
         self.run_bzr('pull ../branch_c --remember')
-        self.assertEquals(branch_b.get_parent(),
+        self.assertEqual(branch_b.get_parent(),
                           branch_c.bzrdir.root_transport.base)
 
     def test_pull_bundle(self):

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWVE802UAD8zfgERQ++///18D
FI6////wYBPHPdM07dtx0L7tu26TQ9B72KqQBSkek6z2wFdOvewFbYUCQACgAcJJEnqamaniQ8k2
p6gwaQyAGgAAAJIgJhAk9JqnqbUTwkHqMgyaZAA0AcwBGCYgGATBNGQ0MAmCMTCQkETVPVNtMVPU
8o9E00bKaBpkNBoAACJQinop7JU9kTZNEJ7KZQZP0p5IGEAB6gVJITIAmEAmCNTaGmhJqaPEQDQ8
paQCVVqUVLJGAdVa2qquyDiFboYgLiS8nVMJnnW53Oz2HMkvPSYy52yjZGbwO8fdGnGtwfbcinNq
wKM0FVBZYUzBHylBRE2y9FyhkP3uFVAsoiDIhl6g2MJwrVh0+tt6PkAtElAHMBEMamOyldHRG/Th
otZaiAXwBm2QKktKwwyI2lCJcn1OSk7SRYCug05VrWdpyKGaHJfySRL6SJ0qiJnEFyaPD48wFu4i
FzAw6z9A2nAA+S61gMiSDIDISKRibD3/yARxZxN3EtOquX8bgL7hpa46rnU5bW1tWbmYkyzDGO97
025kC5trwIVmzZeEZF38OD3ZFUSeej0q6Lu96PQLQra1I3RfQkz6SwSsWNqhpmMWkMbsXsneWe2s
2ZlzTSiay7wPOs/P4OmDCDIQi/Q58/UfJAOddmkFzA1LKx4RHqcT4pG+Bh0hWBJd39/UHpQvboH6
BsEkevW8cQgVAjbNgIpQvLXJJJr2eCWGGYZhmGhISBDNo5VL6XC5BADK1sLz/QtccNvVN26Ngjrf
XnwSGkDGBcoFQk5LFFE1LYWmadrTK9qzQlnmxn3aNrUppxe99L22g47/gNCG+3dIFrnXOc31QeoG
qSQfR3FAMDp+rxGqXfZ/53Vwbv6+Bcv5fcgsqZuh0s7x/95Ru4yX3Z8zUxA7u23djjz5KHRUYykm
0A1FCDGm2NwGxkGj0Pz2J4d/ZyMpaliYL7i1rjYFMchpYtErUOAlow1NG3eYaWUbBrCBCLoYGqEM
2NrkGjB3nn5mOdkNnSNa+qrY9LXkW80yy2YVrmibOz0tRs70RMZeDo8FLGiJZiu8M810d7pG5dnu
t2WrRcu9nQ02I6Th0GAsmwqQMjIb2m2OhpCShlKy0PprKOY7Tx3Hku4Xp1+kOxQjEic8n0+hOtHy
0NjmvmKMEchukP1aGd6p3LCUUj8mFkZ1ctPOkM6efv9/sPojD+gH9wOgBEU9YJ2XlUaoRO6qeTfG
wpcz1vTUPZyZAJdJmMFeRjn2oUwi5U7paqlYjvj3O9PqAIYCDHiAO1cfJ4ZJJJG5JJJJNkvG3PzA
TD6uvv6sPV4HqHk7OF1pygtILWI74nCBWto9aRnmAvpGN+OdPNsRZITrX6riYtMQMRIMeDPx/NVE
o2IKCJSuZSCJLoc2EXeNsFtjYxa2OomMEY9KKNjDKQukQs8VcHM2NS0ksX/KU0tzJmU0qbnQxcmC
5e5KH27mxscm4jt/4RbWtvzw8MwCO3TkGENe8KRcCTIIcTg70jXAH1WSwIxNFoYc4Oh4qRIyLOsn
PnLySrfMCWXb+1dTpo6ER5QYtr3MkzMgwRDSIwJlQfbynu27ytJtTa3QGfSsVZSMkEIGOnEXGFuR
OZjXmktCgKKQyW49KpBhybNNz4pcDwKiHeTCJ67EvbU3fGhuclwODPwwWwrNylwT5SXhdzpLc1HP
M2NDUgXyBIMTl4gU05VEqNeOPMOeIaZzXWZNTNAJ842Kn2y4qLoSBYBTM+RsN2EeIgJVS9Bzkrom
iddZXmckw8xiLUi4O7qwwBEudxiBrlxhDEjVkOLzNxS3j2qUJy0nLwQPaIjSxueSUSKadUGxEkQB
ZMED5COQFHJ105M96XBBLsdFySuXMGwiiUNdw3Qw7InKTTeQzjm/rydbXpysLtPAUMq+oQ5IGU+A
yyWDGxYW5fBs2WRcpHJUR1L3QxjVUdClzMyFAeTaQGNYRcyYiYKkKjjHYyR1Cp3sehwTNTQYuVKE
SZ7RGKfEcruzdga8YRbS9NWennDQPOwi6rLtNqlzYgkrlTFCHsRI6Hvb1ScyVUw0IzdHbrY5sOLt
UzmduReqS0mE2EwfhogkWGS9CBWLvQ1EXICJGhZJ2XcF2JEUYrIzsxLib065JtajBxYyU2sW1exb
WkuCmTFuI9bn4kDj8Mjng0gLa7zecOkls3yOmODNI4O09kcdEOjnkqidOm65XdbO0LL7JW1p5Qu5
nQzNrqYczVqWkpnzJWLqc2eodSpDB3fcslsDDCXBKVh5iMbnALixoQOxwObGI31i9JPgxOuUM2jI
jEtte969MrsIaxsWIkTTSYxIwTEenzFcINAWtiBczSY0sNqUEVLAoguJmTNzeBqPaKCBqfQIkRGM
D95ncA8hzUyXOTJAYcc+f3XEZzV4W3vKfaNml0zZl30BTSo1pKYy0hNAIe/glRQi3yiolI4KzIuI
mmDCXRX0yUsm3GNN6UklsSoNOomsddGpgkebncsXIGARVJFjgYwUJG5wMWLJcgoHqLYRYR9hvfaM
jmVko4o+stR6yp3tayQwVIc6/NjZ+SNO5xtkJOK9vVHayaWvPkwO9iUShBiQ4R3ciLJEhAc5eBkQ
/RNLuVNg+ZByUNDggHRc9Uj5RHg31zy92TNxa7zI5HuWhmRfV+sS9y0tul39TXJocE2LE53JwWuV
BTfubAplChcgbHr6uZ7GxwfBK3YU44MGpMCwl4GIHJMgdjI50qHBUFxxUuTNV3cjzk4p7PTUM9Rv
22tIVuGkLpIujKSYCYV8A7x+wfd8UtJI/cVB7hNbpTpFrUUrOFkscBTlJdErtqVUqjIyMhIVhVkG
D20V0AV2gfqr3gWBcMBaF9SZChcl4ppzfhKwCL9lUSqUhVSpP+trd+w0DDmSL+AzWPw+4VAsBD7R
PQPeY8x1PjdsIhNY7Fgx9w4PnCAbEIjADijrWiDVZAHQVXH2gQQroGl17tgpMbGI2FXoR8obknG2
DYkCJJCLJIECFEO7jDOHv8g5h1/ZsLp5KjBl1RdDUxfk51tGxuSTraHxZSWWMmT6vRne/6+zFkp9
Daa2hrZmK9yN6inv51mB6SlNBrHKd964SjrABEqU5Ro3MiA1C2lS+BiQyLG9EPaA3gTf+P0L95wP
BEhortAtY/SpJnzj0LQj8pPhI/Uc+h0WkJX0COci9ug2t7GR/AYiGj9EfVH3R2z+vq895tu768qf
X2qTNG/E9Fs3k8md81afN7Pb083B7NTJcpizu9e/Lkcyqb1LXKT15TFwNTe0srr1erN5XMXJ7Pkj
06JP82TsTbL4/CPGC8YF4qFpOMtDmTzn1nKMwwjofpIGpxCO12tt0mdyXud3sFOt9lnS72Hu2t2D
O7mh+fg2FROjjvWIJPMBzmhKmUUUkQiB6KrgqIqHSjneEfH5eN1exYt2SauHxeRXxUsOJkBxMihC
A4mQHEyA4mRPxnA7nxePaueDU6zsXuxO6GLtDxaJI72xeLNDM5OIijCT1hocOO5m5RwcZOLgv/3X
u7nZ7ElsaEVow2CLsxlMg4RAw30n5jgywjkZTJcdhZWeR8BUa1JIwpNUmPquefK2j15uWWTzYr2p
APYe0jTFDHuxjtHWI0z4DFTRLyHPU+cUyQbHguQGdOcCEWC9kAO3GKbAI12BuW6FxdJQm1c3rObk
2s7wVMu3v/F2dTY1dMEa2nkp1uxnzQpr7YcJxYQ0ND4jwiJyjb7p/9798Oh1IqOfWTqdQmiFwim7
tsNbsT+lbr522SNQNEs1bw2DKIZJJQo7UbLuSMi5tVIJzTrk85xmhI0tAwTNIpPDPhETxd7WYYda
96yzvYLOt0J4Namh5E9Hk1Mnm1KMzJ3IvYsl+dWSzcs7EXmsxMFcDmdOYNyvxX2LtX8AJ5h7u9OK
2UO7/GT8H3H9meilU+yOm0+Ci+c0QtcWCd2LBdgb4C5UtjZm/ACqMKVBmGt5JxhhmQK0hRQ72y1q
pO4VoB/cMYnB1ZGUmd80aDiSUWldnxR4I6SSX3I9LN8+T5p4XdETWEVDXCKGIZSTCfRGbpR5RHVi
h0Pzqqprn4E5t2y++TLnWEjKZD+vmNAvHukI3yPmdUhFEnPJF7lNq4eAmsD/Jeuu5fETd0GGW0S9
6vS+cTiJu1BsQ9k8iaxShCiI3pSfdFQe4XzwE6ZNAkeyL5PaR0GHsMi6XWIrnq10h9kZdckXy0Hz
oe9lJHUVJ7xtbUa4ia2GjaC+LCw2SNVD/GbCVzzw+gzDR9kdTKpPqmkQpLFpMINe/NJKXnhviPoP
QbhfQymXlJJ8EapJL7x6ySjMuEsJQgExk8krZLEWiHzCdIm9aq7ALqKDAvwhDFW2dBLAMW6oFRqp
I/V2ew5LToTMM07/nLtL0RpzDXQRrJci0iy1CWoJsTvlwnnbxzNdSlSd8vudP3Rdd45o89eJnHKF
y+SipJLI1D1vsiF/+QtZF2wn2i3vkpBsE3cep+78RngzbZRE7Y0b8GmPNue/g1/w3OgeMHWZn0Rk
MOP6eUtD0HoPSSN0X4Us0zPJPw4yQ/VHxRefDOLOzL8m1P32Kp56nMOYKGd9o09RrpUJ7ojzR9Uc
EZE/CP+EiuLh6J4DytF75STxRYcRPOvKI/upDEzxmduz+c6IaqLVDjDZIT+fL0T3qKYe4fqMJO4d
gWhP5wha6bhbPkme/au5T6SpN5wVaCmY5uCb8Ms8kLMyRioLUHAbBiEXS8idEP47/TBU1wwuszRf
Z5C8WChgEWuiF80uZviTgqiqVKlJwvFLj1mgsrqV3KCcSi6FTUmlFNQqkhiJiSWNUz36+bdl9c1Z
22N8tEUss/oj7jIZBikYycDZKRKk9Ul1wyvzsWYcF2ML28Wm/j3VbfZLkpOSf3fZgk5hZNDmVF5R
t5bGAcWYObESNqN0vtr4CY3CwUKJQvXw6OVkoqLqXVVSLVIllRL0YFBoqSNI2SybAvHZQ1J+cmaT
5pGc50+mCYjFH6TR8YfNkEdk/aTYD3jQMU0G6bG843upYqS/r++7x6EfaF0Tijpzu2tglSyNszQk
YI+6OiGY7cJMUXrxrCOkQ7t+TTLOQR1ZucumeTeopKTWW/euCOCOfAT3fvnHVDsksFJKFhgsRzo2
80aIdaOhJKBGB2EEl/i7kinChIKJ5pso
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070821/c7303da9/attachment-0001.pgp 


More information about the bazaar mailing list