Rev 3262: Make Tree.iter_changes a public method (abentley) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Mon Mar 10 23:39:53 GMT 2008


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3262
revision-id:pqm at pqm.ubuntu.com-20080310233945-ed3k1rc4g1p9qcpj
parent: pqm at pqm.ubuntu.com-20080310220259-preiorp3r2pj9er9
parent: aaron at aaronbentley.com-20080310192428-hb0yuqo17riwxti7
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2008-03-10 23:39:45 +0000
message:
  Make Tree.iter_changes a public method (abentley)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
  bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
  bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
  bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
  bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
  bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
  bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
  bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
  bzrlib/tests/workingtree_implementations/test_merge_from_branch.py test_merge_from_bran-20060904034200-12jxyk2zlhpufxe1-1
  bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
  bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
  bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3254.1.4
    revision-id:aaron at aaronbentley.com-20080310192428-hb0yuqo17riwxti7
    parent: aaron at aaronbentley.com-20080308092531-0hsdb338jiqtss90
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: public-iter-changes
    timestamp: Mon 2008-03-10 15:24:28 -0400
    message:
      Update NEWS, add deprecated Tree._iter_changes thunk
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
    ------------------------------------------------------------
    revno: 3254.1.3
    revision-id:aaron at aaronbentley.com-20080308092531-0hsdb338jiqtss90
    parent: aaron at aaronbentley.com-20080307142546-azyehaaiqpec29ll
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: public-iter-changes
    timestamp: Sat 2008-03-08 09:25:31 +0000
    message:
      Fix NEWS
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3254.1.2
    revision-id:aaron at aaronbentley.com-20080307142546-azyehaaiqpec29ll
    parent: aaron at aaronbentley.com-20080307141510-j1w043r5ir8lap88
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: public-iter-changes
    timestamp: Fri 2008-03-07 14:25:46 +0000
    message:
      Fix doiter_changes
    modified:
      bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
    ------------------------------------------------------------
    revno: 3254.1.1
    revision-id:aaron at aaronbentley.com-20080307141510-j1w043r5ir8lap88
    parent: pqm at pqm.ubuntu.com-20080306171300-yr2n8r9w4a4ettbo
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: public-iter-changes
    timestamp: Fri 2008-03-07 14:15:10 +0000
    message:
      Make Tree.iter_changes a public method
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
      bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
      bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
      bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
      bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
      bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
      bzrlib/tests/workingtree_implementations/test_merge_from_branch.py test_merge_from_bran-20060904034200-12jxyk2zlhpufxe1-1
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
=== modified file 'NEWS'
--- a/NEWS	2008-03-10 17:13:08 +0000
+++ b/NEWS	2008-03-10 23:39:45 +0000
@@ -107,6 +107,10 @@
       falling back to other repositories when they have partial data.
       (Robert Collins)
 
+    * ``Tree.iter_changes`` is now a public API, replacing the work-in-progress
+      ``Tree._iter_changes``. The api is now considered stable and ready for
+      external users.  (Aaron Bentley)
+
     * The bzrdir format registry now accepts an ``alias`` keyword to
       register_metadir, used to indicate that a format name is an alias for
       some other format and thus should not be reported when describing the

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2008-03-09 22:17:59 +0000
+++ b/bzrlib/builtins.py	2008-03-10 23:39:45 +0000
@@ -2413,7 +2413,7 @@
                 try:
                     repo_basis = tree.branch.repository.revision_tree(
                         tree.last_revision())
-                    if len(list(repo_basis._iter_changes(tree_basis))):
+                    if len(list(repo_basis.iter_changes(tree_basis))):
                         raise errors.BzrCheckError(
                             "Mismatched basis inventory content.")
                     tree._validate()

=== modified file 'bzrlib/delta.py'
--- a/bzrlib/delta.py	2008-01-28 21:46:16 +0000
+++ b/bzrlib/delta.py	2008-03-07 14:15:10 +0000
@@ -211,7 +211,7 @@
     # mutter('start compare_trees')
 
     for (file_id, path, content_change, versioned, parent_id, name, kind,
-         executable) in new_tree._iter_changes(old_tree, want_unchanged,
+         executable) in new_tree.iter_changes(old_tree, want_unchanged,
             specific_files, extra_trees=extra_trees,
             require_versioned=require_versioned,
             want_unversioned=want_unversioned):
@@ -304,14 +304,14 @@
         """Report one change to a file
 
         :param file_id: The file_id of the file
-        :param path: The old and new paths as generated by Tree._iter_changes.
+        :param path: The old and new paths as generated by Tree.iter_changes.
         :param versioned: may be 'added', 'removed', 'unchanged', or
             'unversioned.
         :param renamed: may be True or False
         :param modified: may be 'created', 'deleted', 'kind changed',
             'modified' or 'unchanged'.
         :param exe_change: True if the execute bit has changed
-        :param kind: A pair of file kinds, as generated by Tree._iter_changes.
+        :param kind: A pair of file kinds, as generated by Tree.iter_changes.
             None indicates no file present.
         """
         if is_quiet():
@@ -375,7 +375,7 @@
     Further processing may be required to produce a human-readable output.
     Unfortunately, some tree-changing operations are very complex
     :change_iterator: an iterator or sequence of changes in the format
-        generated by Tree._iter_changes
+        generated by Tree.iter_changes
     :param reporter: The _ChangeReporter that will report the changes.
     """
     versioned_change_map = {

=== modified file 'bzrlib/diff.py'
--- a/bzrlib/diff.py	2008-01-04 00:26:05 +0000
+++ b/bzrlib/diff.py	2008-03-07 14:15:10 +0000
@@ -930,7 +930,7 @@
     def _show_diff(self, specific_files, extra_trees):
         # TODO: Generation of pseudo-diffs for added/deleted files could
         # be usefully made into a much faster special case.
-        iterator = self.new_tree._iter_changes(self.old_tree,
+        iterator = self.new_tree.iter_changes(self.old_tree,
                                                specific_files=specific_files,
                                                extra_trees=extra_trees,
                                                require_versioned=True)
@@ -967,7 +967,7 @@
                 self.to_file.write("=== renamed %s '%s' => '%s'%s\n" %
                     (kind[0], oldpath_encoded, newpath_encoded, prop_str))
             else:
-                # if it was produced by _iter_changes, it must be
+                # if it was produced by iter_changes, it must be
                 # modified *somehow*, either content or execute bit.
                 self.to_file.write("=== modified %s '%s'%s\n" % (kind[0],
                                    newpath_encoded, prop_str))

=== modified file 'bzrlib/merge.py'
--- a/bzrlib/merge.py	2008-03-03 16:52:41 +0000
+++ b/bzrlib/merge.py	2008-03-07 14:15:10 +0000
@@ -565,7 +565,7 @@
         if self.change_reporter is not None:
             from bzrlib import delta
             delta.report_changes(
-                self.tt._iter_changes(), self.change_reporter)
+                self.tt.iter_changes(), self.change_reporter)
         self.cook_conflicts(fs_conflicts)
         for conflict in self.cooked_conflicts:
             warning(conflict)
@@ -580,7 +580,7 @@
         executable3 is a tuple of execute-bit values for base, other and this.
         """
         result = []
-        iterator = self.other_tree._iter_changes(self.base_tree,
+        iterator = self.other_tree.iter_changes(self.base_tree,
                 include_unchanged=True, specific_files=self.interesting_files,
                 extra_trees=[self.this_tree])
         for (file_id, paths, changed, versioned, parents, names, kind,

=== modified file 'bzrlib/status.py'
--- a/bzrlib/status.py	2008-01-28 15:03:14 +0000
+++ b/bzrlib/status.py	2008-03-07 14:15:10 +0000
@@ -103,7 +103,7 @@
             _raise_if_nonexistent(specific_files, old, new)
             want_unversioned = not versioned
             if short:
-                changes = new._iter_changes(old, show_unchanged, specific_files,
+                changes = new.iter_changes(old, show_unchanged, specific_files,
                     require_versioned=False, want_unversioned=want_unversioned)
                 reporter = _mod_delta._ChangeReporter(output_file=to_file,
                     unversioned_filter=new.is_ignored)

=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py	2008-03-06 15:40:56 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py	2008-03-07 14:15:10 +0000
@@ -491,4 +491,4 @@
         this_tree.lock_read()
         self.addCleanup(this_tree.unlock)
         self.assertEqual([],
-                         list(this_tree._iter_changes(this_tree.basis_tree())))
+                         list(this_tree.iter_changes(this_tree.basis_tree())))

=== modified file 'bzrlib/tests/intertree_implementations/test_compare.py'
--- a/bzrlib/tests/intertree_implementations/test_compare.py	2007-11-01 09:52:45 +0000
+++ b/bzrlib/tests/intertree_implementations/test_compare.py	2008-03-07 14:25:46 +0000
@@ -344,11 +344,11 @@
     """Test the comparison iterator"""
 
     def do_iter_changes(self, tree1, tree2, **extra_args):
-        """Helper to run _iter_changes from tree1 to tree2.
+        """Helper to run iter_changes from tree1 to tree2.
         
         :param tree1, tree2:  The source and target trees. These will be locked
             automatically.
-        :param **extra_args: Extra args to pass to _iter_changes. This is not
+        :param **extra_args: Extra args to pass to iter_changes. This is not
             inspected by this test helper.
         """
         tree1.lock_read()
@@ -356,7 +356,7 @@
         try:
             # sort order of output is not strictly defined
             return sorted(self.intertree_class(tree1, tree2)
-                ._iter_changes(**extra_args))
+                .iter_changes(**extra_args))
         finally:
             tree1.unlock()
             tree2.unlock()
@@ -729,7 +729,7 @@
         tree2.add_reference(subtree2)
         tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
 
-        self.assertEqual([], list(tree2._iter_changes(tree1)))
+        self.assertEqual([], list(tree2.iter_changes(tree1)))
         subtree1.commit('commit', rev_id='commit-a')
         self.assertEqual([
             ('root-id',
@@ -748,7 +748,7 @@
              ('sub', 'sub'),
              ('tree-reference', 'tree-reference'),
              (False, False))],
-                         list(tree2._iter_changes(tree1,
+                         list(tree2.iter_changes(tree1,
                              include_unchanged=True)))
 
     def test_disk_in_subtrees_skipped(self):

=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py	2008-02-24 16:42:13 +0000
+++ b/bzrlib/tests/test_transform.py	2008-03-07 14:15:10 +0000
@@ -836,17 +836,17 @@
         transform.apply()
         transform, root = self.get_transform()
         try:
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             old = transform.trans_id_tree_file_id('id-1')
             transform.unversion_file(old)
             self.assertEqual([('id-1', ('old', None), False, (True, False),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (True, True))], list(transform._iter_changes()))
+                (True, True))], list(transform.iter_changes()))
             transform.new_directory('new', root, 'id-1')
             self.assertEqual([('id-1', ('old', 'new'), True, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'new'),
                 ('file', 'directory'),
-                (True, False))], list(transform._iter_changes()))
+                (True, False))], list(transform.iter_changes()))
         finally:
             transform.finalize()
 
@@ -861,7 +861,7 @@
             transform.version_file('id-1', old)
             self.assertEqual([('id-1', (None, 'old'), False, (False, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
         finally:
             transform.finalize()
 
@@ -877,61 +877,61 @@
             old = transform.trans_id_tree_path('old')
             subdir = transform.trans_id_tree_file_id('subdir-id')
             new = transform.trans_id_tree_path('new')
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
 
             #content deletion
             transform.delete_contents(old)
             self.assertEqual([('id-1', ('old', 'old'), True, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', None),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
 
             #content change
             transform.create_file('blah', old)
             self.assertEqual([('id-1', ('old', 'old'), True, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
             transform.cancel_deletion(old)
             self.assertEqual([('id-1', ('old', 'old'), True, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
             transform.cancel_creation(old)
 
             # move file_id to a different file
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             transform.unversion_file(old)
             transform.version_file('id-1', new)
             transform.adjust_path('old', root, new)
             self.assertEqual([('id-1', ('old', 'old'), True, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
             transform.cancel_versioning(new)
             transform._removed_id = set()
 
             #execute bit
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             transform.set_executability(True, old)
             self.assertEqual([('id-1', ('old', 'old'), False, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
-                (False, True))], list(transform._iter_changes()))
+                (False, True))], list(transform.iter_changes()))
             transform.set_executability(None, old)
 
             # filename
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             transform.adjust_path('new', root, old)
             transform._new_parent = {}
             self.assertEqual([('id-1', ('old', 'new'), False, (True, True),
                 ('eert_toor', 'eert_toor'), ('old', 'new'), ('file', 'file'),
-                (False, False))], list(transform._iter_changes()))
+                (False, False))], list(transform.iter_changes()))
             transform._new_name = {}
 
             # parent directory
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             transform.adjust_path('new', subdir, old)
             transform._new_name = {}
             self.assertEqual([('id-1', ('old', 'subdir/old'), False,
                 (True, True), ('eert_toor', 'subdir-id'), ('old', 'old'),
                 ('file', 'file'), (False, False))],
-                list(transform._iter_changes()))
+                list(transform.iter_changes()))
             transform._new_path = {}
 
         finally:
@@ -959,7 +959,7 @@
                 ('id-2', (u'file2', u'file2'), False, (True, True),
                 ('eert_toor', 'eert_toor'), ('file2', u'file2'),
                 ('file', 'file'), (False, True))],
-                list(transform._iter_changes()))
+                list(transform.iter_changes()))
         finally:
             transform.finalize()
 
@@ -979,7 +979,7 @@
             transform.adjust_path('flitter', root, floater)
             self.assertEqual([('floater-id', ('floater', 'flitter'), False,
             (True, True), ('toor_eert', 'toor_eert'), ('floater', 'flitter'),
-            (None, None), (False, False))], list(transform._iter_changes()))
+            (None, None), (False, False))], list(transform.iter_changes()))
         finally:
             transform.finalize()
 
@@ -994,14 +994,14 @@
         try:
             old = transform.trans_id_tree_path('old')
             subdir = transform.trans_id_tree_file_id('subdir-id')
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
             transform.delete_contents(subdir)
             transform.create_directory(subdir)
             transform.set_executability(False, old)
             transform.unversion_file(old)
             transform.version_file('id-1', old)
             transform.adjust_path('old', root, old)
-            self.assertEqual([], list(transform._iter_changes()))
+            self.assertEqual([], list(transform.iter_changes()))
         finally:
             transform.finalize()
 
@@ -1617,7 +1617,7 @@
         self.assertEqual(['file1-id'], calls)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
 
     def test_build_tree_accelerator_tree_missing_file(self):
         source = self.create_ab_tree()
@@ -1630,7 +1630,7 @@
         build_tree(revision_tree, target, source)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
 
     def test_build_tree_accelerator_wrong_kind(self):
         self.requireFeature(SymlinkFeature)
@@ -1657,7 +1657,7 @@
         self.assertEqual([], calls)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
 
     def test_build_tree_hardlink(self):
         self.requireFeature(HardlinkFeature)
@@ -1669,7 +1669,7 @@
         build_tree(revision_tree, target, source, hardlink=True)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
         source_stat = os.stat('source/file1')
         target_stat = os.stat('target/file1')
         self.assertEqual(source_stat, target_stat)
@@ -1679,7 +1679,7 @@
         build_tree(revision_tree, target2, source, hardlink=False)
         target2.lock_read()
         self.addCleanup(target2.unlock)
-        self.assertEqual([], list(target2._iter_changes(revision_tree)))
+        self.assertEqual([], list(target2.iter_changes(revision_tree)))
         source_stat = os.stat('source/file1')
         target2_stat = os.stat('target2/file1')
         self.assertNotEqual(source_stat, target2_stat)
@@ -1699,7 +1699,7 @@
         build_tree(revision_tree, target, source)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
 
     def test_build_tree_hardlinks_preserve_execute(self):
         self.requireFeature(HardlinkFeature)
@@ -1716,7 +1716,7 @@
         build_tree(revision_tree, target, source, hardlink=True)
         target.lock_read()
         self.addCleanup(target.unlock)
-        self.assertEqual([], list(target._iter_changes(revision_tree)))
+        self.assertEqual([], list(target.iter_changes(revision_tree)))
         self.assertTrue(source.is_executable('file1-id'))
 
 
@@ -1955,29 +1955,29 @@
         self.assertEqual([('a-id', ('a', 'a'), True, (True, True),
                           (root, root), ('a', 'a'), ('file', 'file'),
                           (False, False))],
-                          list(preview_tree._iter_changes(revision_tree)))
+                          list(preview_tree.iter_changes(revision_tree)))
 
     def test_wrong_tree_value_error(self):
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        e = self.assertRaises(ValueError, preview_tree._iter_changes,
+        e = self.assertRaises(ValueError, preview_tree.iter_changes,
                               preview_tree)
         self.assertEqual('from_tree must be transform source tree.', str(e))
 
     def test_include_unchanged_value_error(self):
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        e = self.assertRaises(ValueError, preview_tree._iter_changes,
+        e = self.assertRaises(ValueError, preview_tree.iter_changes,
                               revision_tree, include_unchanged=True)
         self.assertEqual('include_unchanged is not supported', str(e))
 
     def test_specific_files(self):
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        e = self.assertRaises(ValueError, preview_tree._iter_changes,
+        e = self.assertRaises(ValueError, preview_tree.iter_changes,
                               revision_tree, specific_files=['pete'])
         self.assertEqual('specific_files is not supported', str(e))
 
     def test_want_unversioned_value_error(self):
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        e = self.assertRaises(ValueError, preview_tree._iter_changes,
+        e = self.assertRaises(ValueError, preview_tree.iter_changes,
                               revision_tree, want_unversioned=True)
         self.assertEqual('want_unversioned is not supported', str(e))
 
@@ -1985,17 +1985,17 @@
         # extra_trees is harmless without specific_files, so we'll silently
         # accept it, even though we won't use it.
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        preview_tree._iter_changes(revision_tree, extra_trees=[preview_tree])
+        preview_tree.iter_changes(revision_tree, extra_trees=[preview_tree])
 
     def test_ignore_require_versioned_no_specific_files(self):
         # require_versioned is meaningless without specific_files.
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        preview_tree._iter_changes(revision_tree, require_versioned=False)
+        preview_tree.iter_changes(revision_tree, require_versioned=False)
 
     def test_ignore_pb(self):
         # pb could be supported, but TT.iter_changes doesn't support it.
         revision_tree, preview_tree = self.get_tree_and_preview_tree()
-        preview_tree._iter_changes(revision_tree, pb=progress.DummyProgress())
+        preview_tree.iter_changes(revision_tree, pb=progress.DummyProgress())
 
     def test_kind(self):
         revision_tree = self.create_tree()

=== modified file 'bzrlib/tests/test_workingtree_4.py'
--- a/bzrlib/tests/test_workingtree_4.py	2008-02-04 21:12:49 +0000
+++ b/bzrlib/tests/test_workingtree_4.py	2008-03-07 14:15:10 +0000
@@ -496,7 +496,7 @@
             (None, u'dir'),
             (None, 'directory'),
             (None, False))]
-        self.assertEqual(expected, list(tree._iter_changes(tree.basis_tree(),
+        self.assertEqual(expected, list(tree.iter_changes(tree.basis_tree(),
             specific_files=['dir'])))
         tree.unlock()
         # do a commit, we want to trigger the dirstate fast-path too
@@ -514,7 +514,7 @@
             ('dir', 'dir'),
             ('directory', None),
             (False, False))]
-        self.assertEqual(expected, list(tree._iter_changes(tree.basis_tree())))
+        self.assertEqual(expected, list(tree.iter_changes(tree.basis_tree())))
         tree.unlock()
 
     def test_with_subtree_supports_tree_references(self):
@@ -526,7 +526,7 @@
         # workingtree_4.
 
     def test_iter_changes_ignores_unversioned_dirs(self):
-        """_iter_changes should not descend into unversioned directories."""
+        """iter_changes should not descend into unversioned directories."""
         tree = self.make_branch_and_tree('.', format='dirstate')
         # We have an unversioned directory at the root, a versioned one with
         # other versioned files and an unversioned directory, and another
@@ -564,14 +564,14 @@
         basis.lock_read()
         self.addCleanup(basis.unlock)
         changes = [c[1] for c in
-                   tree._iter_changes(basis, want_unversioned=True)]
+                   tree.iter_changes(basis, want_unversioned=True)]
         self.assertEqual([(None, 'unversioned'),
                           (None, 'versioned/unversioned'),
                           (None, 'versioned2/unversioned'),
                          ], changes)
         self.assertEqual(['', 'versioned', 'versioned2'], returned)
         del returned[:] # reset
-        changes = [c[1] for c in tree._iter_changes(basis)]
+        changes = [c[1] for c in tree.iter_changes(basis)]
         self.assertEqual([], changes)
         self.assertEqual(['', 'versioned', 'versioned2'], returned)
 
@@ -599,7 +599,7 @@
                                             [('f', '', 0, False, ''),
                                              ('r', 'bar', 0 , False, '')]))
             self.assertListRaises(errors.CorruptDirstate,
-                                  tree._iter_changes, tree.basis_tree())
+                                  tree.iter_changes, tree.basis_tree())
         finally:
             tree.unlock()
 

=== modified file 'bzrlib/tests/workingtree_implementations/test_merge_from_branch.py'
--- a/bzrlib/tests/workingtree_implementations/test_merge_from_branch.py	2007-07-25 21:25:00 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_merge_from_branch.py	2008-03-07 14:15:10 +0000
@@ -69,7 +69,7 @@
         tree_a.merge_from_branch(tree_b.branch)
         tree_a.lock_read()
         self.addCleanup(tree_a.unlock)
-        list(tree_a._iter_changes(tree_a.basis_tree()))
+        list(tree_a.iter_changes(tree_a.basis_tree()))
 
     def test_merge_empty(self):
         tree_a = self.make_branch_and_tree('tree_a')
@@ -96,7 +96,7 @@
         tree_a.merge_from_branch(tree_b.branch, from_revision='rev_1')
         tree_a.lock_read()
         self.addCleanup(tree_a.unlock)
-        changes = list(tree_a._iter_changes(tree_a.basis_tree()))
+        changes = list(tree_a.iter_changes(tree_a.basis_tree()))
         self.assertEqual(1, len(changes))
 
     def test_merge_type(self):

=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py	2008-02-28 01:38:41 +0000
+++ b/bzrlib/transform.py	2008-03-07 14:15:10 +0000
@@ -1002,8 +1002,8 @@
             to_executable = False
         return to_name, to_parent, to_kind, to_executable
 
-    def _iter_changes(self):
-        """Produce output in the same format as Tree._iter_changes.
+    def iter_changes(self):
+        """Produce output in the same format as Tree.iter_changes.
 
         Will produce nonsensical results if invoked while inventory/filesystem
         conflicts (as reported by TreeTransform.find_conflicts()) are present.
@@ -1372,10 +1372,10 @@
     def unlock(self):
         pass
 
-    def _iter_changes(self, from_tree, include_unchanged=False,
+    def iter_changes(self, from_tree, include_unchanged=False,
                       specific_files=None, pb=None, extra_trees=None,
                       require_versioned=True, want_unversioned=False):
-        """See InterTree._iter_changes.
+        """See InterTree.iter_changes.
 
         This implementation does not support include_unchanged, specific_files,
         or want_unversioned.  extra_trees, require_versioned, and pb are
@@ -1389,7 +1389,7 @@
             raise ValueError('specific_files is not supported')
         if want_unversioned:
             raise ValueError('want_unversioned is not supported')
-        return self._transform._iter_changes()
+        return self._transform.iter_changes()
 
     def kind(self, file_id):
         trans_id = self._transform.trans_id_file_id(file_id)
@@ -1608,7 +1608,7 @@
     if accelerator_tree is None:
         new_desired_files = desired_files
     else:
-        iter = accelerator_tree._iter_changes(tree, include_unchanged=True)
+        iter = accelerator_tree.iter_changes(tree, include_unchanged=True)
         unchanged = dict((f, p[1]) for (f, p, c, v, d, n, k, e)
                          in iter if not (c or e[0] != e[1]))
         new_desired_files = []
@@ -1856,7 +1856,7 @@
         if change_reporter:
             change_reporter = delta._ChangeReporter(
                 unversioned_filter=working_tree.is_ignored)
-            delta.report_changes(tt._iter_changes(), change_reporter)
+            delta.report_changes(tt.iter_changes(), change_reporter)
         for conflict in conflicts:
             warning(conflict)
         pp.next_phase()
@@ -1872,7 +1872,7 @@
 def _alter_files(working_tree, target_tree, tt, pb, specific_files,
                  backups):
     merge_modified = working_tree.merge_modified()
-    change_list = target_tree._iter_changes(working_tree,
+    change_list = target_tree.iter_changes(working_tree,
         specific_files=specific_files, pb=pb)
     if target_tree.inventory.root is None:
         skip_root = True

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2008-02-28 00:36:28 +0000
+++ b/bzrlib/tree.py	2008-03-10 19:24:28 +0000
@@ -93,11 +93,15 @@
             want_unversioned=want_unversioned,
             )
 
-    def _iter_changes(self, from_tree, include_unchanged=False,
+    @symbol_versioning.deprecated_method(symbol_versioning.one_three)
+    def _iter_changes(self, *args, **kwargs):
+        return self.iter_changes(*args, **kwargs)
+
+    def iter_changes(self, from_tree, include_unchanged=False,
                      specific_files=None, pb=None, extra_trees=None,
                      require_versioned=True, want_unversioned=False):
         intertree = InterTree.get(from_tree, self)
-        return intertree._iter_changes(include_unchanged, specific_files, pb,
+        return intertree.iter_changes(include_unchanged, specific_files, pb,
             extra_trees, require_versioned, want_unversioned=want_unversioned)
     
     def conflicts(self):
@@ -718,7 +722,7 @@
             require_versioned=require_versioned,
             want_unversioned=want_unversioned)
 
-    def _iter_changes(self, include_unchanged=False,
+    def iter_changes(self, include_unchanged=False,
                       specific_files=None, pb=None, extra_trees=[],
                       require_versioned=True, want_unversioned=False):
         """Generate an iterator of changes between trees.

=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py	2008-02-28 01:33:35 +0000
+++ b/bzrlib/workingtree.py	2008-03-07 14:15:10 +0000
@@ -508,7 +508,7 @@
         basis = self.basis_tree()
         basis.lock_read()
         try:
-            changes = self._iter_changes(basis, True, [self.id2path(file_id)],
+            changes = self.iter_changes(basis, True, [self.id2path(file_id)],
                 require_versioned=True).next()
             changed_content, kind = changes[2], changes[6]
             if not changed_content:
@@ -1935,7 +1935,7 @@
             has_changed_files = len(unknown_nested_files) > 0
             if not has_changed_files:
                 for (file_id, path, content_change, versioned, parent_id, name,
-                     kind, executable) in self._iter_changes(self.basis_tree(),
+                     kind, executable) in self.iter_changes(self.basis_tree(),
                          include_unchanged=True, require_versioned=False,
                          want_unversioned=True, specific_files=files):
                     if versioned == (False, False):

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2008-02-28 01:33:35 +0000
+++ b/bzrlib/workingtree_4.py	2008-03-07 14:15:10 +0000
@@ -1760,12 +1760,12 @@
     _matching_to_tree_format = WorkingTreeFormat4()
     _test_mutable_trees_to_test_trees = make_source_parent_tree
 
-    def _iter_changes(self, include_unchanged=False,
+    def iter_changes(self, include_unchanged=False,
                       specific_files=None, pb=None, extra_trees=[],
                       require_versioned=True, want_unversioned=False):
         """Return the changes from source to target.
 
-        :return: An iterator that yields tuples. See InterTree._iter_changes
+        :return: An iterator that yields tuples. See InterTree.iter_changes
             for details.
         :param specific_files: An optional list of file paths to restrict the
             comparison to. When mapping filenames to ids, all matches in all
@@ -1790,7 +1790,7 @@
         # TODO: handle extra trees in the dirstate.
         if (extra_trees or specific_files == []):
             # we can't fast-path these cases (yet)
-            for f in super(InterDirStateTree, self)._iter_changes(
+            for f in super(InterDirStateTree, self).iter_changes(
                 include_unchanged, specific_files, pb, extra_trees,
                 require_versioned, want_unversioned=want_unversioned):
                 yield f
@@ -1800,7 +1800,7 @@
                 or self.source._revision_id == NULL_REVISION), \
                 "revision {%s} is not stored in {%s}, but %s " \
                 "can only be used for trees stored in the dirstate" \
-                % (self.source._revision_id, self.target, self._iter_changes)
+                % (self.source._revision_id, self.target, self.iter_changes)
         target_index = 0
         if self.source._revision_id == NULL_REVISION:
             source_index = None




More information about the bazaar-commits mailing list