Rev 2333: Move is_ignored processing into _iter_changes, allowing optional lookup of unexpected files. in file:///home/robertc/source/baz/dirstate2/

Robert Collins robertc at robertcollins.net
Mon Mar 12 05:29:11 GMT 2007


At file:///home/robertc/source/baz/dirstate2/

------------------------------------------------------------
revno: 2333
revision-id: robertc at robertcollins.net-20070312052908-h1rm7g7pnr5zegio
parent: robertc at robertcollins.net-20070312035424-swyf5foev6otm12f
committer: Robert Collins <robertc at robertcollins.net>
branch nick: dirstate2
timestamp: Mon 2007-03-12 16:29:08 +1100
message:
  Move is_ignored processing into _iter_changes, allowing optional lookup of unexpected files.
modified:
  bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
  bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
=== modified file 'bzrlib/status.py'
--- a/bzrlib/status.py	2007-03-12 03:54:24 +0000
+++ b/bzrlib/status.py	2007-03-12 05:29:08 +0000
@@ -145,17 +145,12 @@
             if short:
                 changes = new._iter_changes(old, show_unchanged, specific_files,
                     require_versioned=False, want_unknown=True)
-                reporter = _mod_delta.ChangeReporter(output_file=to_file,
-                    unversioned_filter=new.is_ignored)
+                reporter = _mod_delta.ChangeReporter(output_file=to_file)
                 _mod_delta.report_changes(changes, reporter)
             else:
                 delta = new.changes_from(old, want_unchanged=show_unchanged,
                                       specific_files=specific_files,
                                       want_unknown=True)
-                # filter out unknown files. We may want a tree method for
-                # this
-                delta.unversioned = [unversioned for unversioned in
-                    delta.unversioned if not new.is_ignored(unversioned[0])]
                 delta.show(to_file,
                            show_ids=show_ids,
                            show_unchanged=show_unchanged,

=== modified file 'bzrlib/tests/intertree_implementations/test_compare.py'
--- a/bzrlib/tests/intertree_implementations/test_compare.py	2007-03-12 03:54:24 +0000
+++ b/bzrlib/tests/intertree_implementations/test_compare.py	2007-03-12 05:29:08 +0000
@@ -795,6 +795,31 @@
             ])
         self.assertEqual(expected, self.do_iter_changes(tree1, tree2))
 
+    def test_ignores_filters_unknown_paths_in_tree(self):
+        tree1 = self.make_branch_and_tree('tree1')
+        tree2 = self.make_to_branch_and_tree('tree2')
+        self.build_tree(['tree2/file', 'tree2/dir/'])
+        self.build_tree_contents([('tree1/.bzrignore', 'file\n')])
+        self.build_tree_contents([('tree2/.bzrignore', 'file\n')])
+        tree1.add(['.bzrignore'], ['ignore-id'])
+        tree2.add(['.bzrignore'], ['ignore-id'])
+        tree1.set_root_id(tree2.path2id(''))
+        tree1, tree2 = self.mutable_trees_to_test_trees(tree1, tree2)
+        tree1.lock_read()
+        self.addCleanup(tree1.unlock)
+        tree2.lock_read()
+        self.addCleanup(tree2.unlock)
+        expected = [
+            self.unknown(tree2, 'dir'),
+            ]
+        specific_files=['file', 'dir']
+        expected = sorted(expected)
+        self.assertEqual(expected, self.do_iter_changes(tree1, tree2,
+            require_versioned=False, want_unknown=True))
+        self.assertEqual(expected, self.do_iter_changes(tree1, tree2,
+            specific_files=specific_files, require_versioned=False,
+            want_unknown=True))
+
     def test_unknown_paths_in_tree(self):
         tree1 = self.make_branch_and_tree('tree1')
         tree2 = self.make_to_branch_and_tree('tree2')

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2007-03-12 03:54:24 +0000
+++ b/bzrlib/workingtree_4.py	2007-03-12 05:29:08 +0000
@@ -1764,7 +1764,7 @@
         last_target_parent = [None, None, None]
 
         use_filesystem_for_exec = (sys.platform != 'win32')
-
+        is_ignored = self.target.is_ignored
         def _process_entry(entry, path_info):
             """Compare an entry and real disk to generate delta information.
 
@@ -1993,7 +1993,7 @@
                             ((utf8_decode(result[1][0])[0]),
                              utf8_decode(result[1][1])[0]),) + result[2:]
                         yield result
-            if want_unknown and not path_handled:
+            if want_unknown and not path_handled and not is_ignored(current_root):
                 yield (None, (None, current_root), True, (False, False),
                     (None, None),
                     (None, splitpath(current_root)[-1]),
@@ -2182,7 +2182,7 @@
                     if advance_path and current_path_info is not None:
                         if not path_handled:
                             # unversioned in all regards
-                            if want_unknown:
+                            if want_unknown and not is_ignored(current_path_info[0]):
                                 yield (None, (None, current_path_info[0]),
                                     True,
                                     (False, False),



More information about the bazaar-commits mailing list