Rev 3167: InterDifferingSerializer shows a progress bar (abentley) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Jan 4 04:57:58 GMT 2008
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3167
revision-id:pqm at pqm.ubuntu.com-20080104045747-v647p21t9f2iicow
parent: pqm at pqm.ubuntu.com-20080104035252-47tqschd3kbq66vc
parent: aaron.bentley at utoronto.ca-20071230182015-wnqwi7okgkuu6asy
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2008-01-04 04:57:47 +0000
message:
InterDifferingSerializer shows a progress bar (abentley)
modified:
bzrlib/progress.py progress.py-20050610070202-df9faaab791964c0
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/test_progress.py test_progress.py-20060308160359-978c397bc79b7fda
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
------------------------------------------------------------
revno: 3146.6.1
revision-id:aaron.bentley at utoronto.ca-20071230182015-wnqwi7okgkuu6asy
parent: pqm at pqm.ubuntu.com-20071228175832-9kboqtkemnuzzlab
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: pb-inter-differing
timestamp: Sun 2007-12-30 13:20:15 -0500
message:
InterDifferingSerializer shows a progress bar
modified:
bzrlib/progress.py progress.py-20050610070202-df9faaab791964c0
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/test_progress.py test_progress.py-20060308160359-978c397bc79b7fda
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
=== modified file 'bzrlib/progress.py'
--- a/bzrlib/progress.py 2007-10-29 16:54:00 +0000
+++ b/bzrlib/progress.py 2007-12-30 18:20:15 +0000
@@ -491,7 +491,24 @@
def note(self, *args, **kwargs):
self.parent.note(*args, **kwargs)
-
+
+class InstrumentedProgress(TTYProgressBar):
+ """TTYProgress variant that tracks outcomes"""
+
+ def __init__(self, *args, **kwargs):
+ self.always_throttled = True
+ self.never_throttle = False
+ TTYProgressBar.__init__(self, *args, **kwargs)
+
+ def throttle(self, old_message):
+ if self.never_throttle:
+ result = False
+ else:
+ result = TTYProgressBar.throttle(self, old_message)
+ if result is False:
+ self.always_throttled = False
+
+
def str_tdelta(delt):
if delt is None:
return "-:--:--"
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2008-01-02 15:49:06 +0000
+++ b/bzrlib/repository.py 2008-01-04 04:57:47 +0000
@@ -1854,7 +1854,7 @@
install_revisions(repository, [(rev, revision_tree, None)])
-def install_revisions(repository, iterable):
+def install_revisions(repository, iterable, num_revisions=None, pb=None):
"""Install all revision data into a repository.
Accepts an iterable of revision, tree, signature tuples. The signature
@@ -1862,8 +1862,10 @@
"""
repository.start_write_group()
try:
- for revision, revision_tree, signature in iterable:
+ for n, (revision, revision_tree, signature) in enumerate(iterable):
_install_revision(repository, revision, revision_tree, signature)
+ if pb is not None:
+ pb.update('Transferring revisions', n + 1, num_revisions)
except:
repository.abort_write_group()
raise
@@ -2777,7 +2779,17 @@
except errors.NoSuchRevision:
signature = None
yield revision, tree, signature
- install_revisions(self.target, revisions_iterator())
+ if pb is None:
+ my_pb = ui.ui_factory.nested_progress_bar()
+ pb = my_pb
+ else:
+ my_pb = None
+ try:
+ install_revisions(self.target, revisions_iterator(),
+ len(revision_ids), pb)
+ finally:
+ if my_pb is not None:
+ my_pb.finished()
return len(revision_ids), 0
=== modified file 'bzrlib/tests/test_progress.py'
--- a/bzrlib/tests/test_progress.py 2007-07-11 06:47:30 +0000
+++ b/bzrlib/tests/test_progress.py 2007-12-30 18:20:15 +0000
@@ -24,6 +24,7 @@
TTYProgressBar,
DotsProgressBar,
ProgressBarStack,
+ InstrumentedProgress,
)
from bzrlib.tests import TestCase
@@ -35,18 +36,6 @@
def top(self):
return self.__top
-class InstrumentedProgress(TTYProgressBar):
- """TTYProgress variant that tracks outcomes"""
-
- def __init__(self, *args, **kwargs):
- self.always_throttled = True
- TTYProgressBar.__init__(self, *args, **kwargs)
-
- def throttle(self, old_message):
- result = TTYProgressBar.throttle(self, old_message)
- if result is False:
- self.always_throttled = False
-
class _TTYStringIO(StringIO):
"""A helper class which makes a StringIO look like a terminal"""
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py 2007-12-04 02:19:39 +0000
+++ b/bzrlib/tests/test_repository.py 2007-12-30 18:20:15 +0000
@@ -47,6 +47,7 @@
bzrdir,
errors,
inventory,
+ progress,
repository,
revision as _mod_revision,
symbol_versioning,
@@ -1431,3 +1432,24 @@
# To date, this class has been factored out and nothing new added to it;
# thus there are not yet any tests.
+
+
+class TestInterDifferingSerializer(TestCaseWithTransport):
+
+ def test_progress_bar(self):
+ tree = self.make_branch_and_tree('tree')
+ tree.commit('rev1', rev_id='rev-1')
+ tree.commit('rev2', rev_id='rev-2')
+ tree.commit('rev3', rev_id='rev-3')
+ repo = self.make_repository('repo')
+ inter_repo = repository.InterDifferingSerializer(
+ tree.branch.repository, repo)
+ pb = progress.InstrumentedProgress(to_file=StringIO())
+ pb.never_throttle = True
+ inter_repo.fetch('rev-1', pb)
+ self.assertEqual('Transferring revisions', pb.last_msg)
+ self.assertEqual(1, pb.last_cnt)
+ self.assertEqual(1, pb.last_total)
+ inter_repo.fetch('rev-3', pb)
+ self.assertEqual(2, pb.last_cnt)
+ self.assertEqual(2, pb.last_total)
More information about the bazaar-commits
mailing list