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