Merge lp:~jelmer/brz/is-versioned into lp:brz
- is-versioned
- Merge into trunk
Proposed by
Jelmer Vernooij
Status: | Merged |
---|---|
Merged at revision: | 6856 |
Proposed branch: | lp:~jelmer/brz/is-versioned |
Merge into: | lp:brz |
Diff against target: |
796 lines (+100/-105) 31 files modified
breezy/builtins.py (+1/-1) breezy/bzr/bzrdir.py (+1/-1) breezy/bzr/workingtree.py (+3/-2) breezy/ignores.py (+1/-1) breezy/plugins/fastimport/tests/test_generic_processor.py (+2/-4) breezy/rename_map.py (+1/-1) breezy/tests/__init__.py (+2/-2) breezy/tests/blackbox/test_mv.py (+6/-6) breezy/tests/blackbox/test_remove.py (+1/-1) breezy/tests/blackbox/test_repair_workingtree.py (+2/-2) breezy/tests/per_intertree/__init__.py (+1/-1) breezy/tests/per_tree/test_test_trees.py (+3/-0) breezy/tests/per_tree/test_tree.py (+5/-4) breezy/tests/per_workingtree/test_get_file_mtime.py (+1/-4) breezy/tests/per_workingtree/test_inv.py (+1/-1) breezy/tests/per_workingtree/test_read_working_inventory.py (+1/-4) breezy/tests/per_workingtree/test_smart_add.py (+14/-15) breezy/tests/per_workingtree/test_symlinks.py (+8/-8) breezy/tests/per_workingtree/test_unversion.py (+3/-4) breezy/tests/per_workingtree/test_workingtree.py (+4/-8) breezy/tests/test_bundle.py (+7/-7) breezy/tests/test_commit.py (+3/-7) breezy/tests/test_inv.py (+3/-3) breezy/tests/test_merge.py (+1/-1) breezy/tests/test_transform.py (+7/-7) breezy/tests/test_uncommit.py (+1/-1) breezy/tests/test_upstream_import.py (+5/-5) breezy/tests/test_workingtree_4.py (+2/-2) breezy/tree.py (+8/-0) breezy/upstream_import.py (+1/-1) breezy/workingtree.py (+1/-1) |
To merge this branch: | bzr merge lp:~jelmer/brz/is-versioned |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Martin Packman | Approve | ||
Review via email: mp+337827@code.launchpad.net |
Commit message
Description of the change
Add Tree.is_
Another step twoards removing file_ids from the public API.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'breezy/builtins.py' |
2 | --- breezy/builtins.py 2017-12-23 10:48:42 +0000 |
3 | +++ breezy/builtins.py 2018-02-15 22:17:55 +0000 |
4 | @@ -875,7 +875,7 @@ |
5 | |
6 | @classmethod |
7 | def add_file_with_parents(cls, wt, relpath): |
8 | - if wt.path2id(relpath) is not None: |
9 | + if wt.is_versioned(relpath): |
10 | return |
11 | cls.add_file_with_parents(wt, osutils.dirname(relpath)) |
12 | wt.add([relpath]) |
13 | |
14 | === modified file 'breezy/bzr/bzrdir.py' |
15 | --- breezy/bzr/bzrdir.py 2017-11-23 20:02:55 +0000 |
16 | +++ breezy/bzr/bzrdir.py 2018-02-15 22:17:55 +0000 |
17 | @@ -451,7 +451,7 @@ |
18 | hardlink=hardlink, from_branch=result_branch) |
19 | wt.lock_write() |
20 | try: |
21 | - if wt.path2id('') is None: |
22 | + if not wt.is_versioned(''): |
23 | try: |
24 | wt.set_root_id(self.open_workingtree.get_root_id()) |
25 | except errors.NoWorkingTree: |
26 | |
27 | === modified file 'breezy/bzr/workingtree.py' |
28 | --- breezy/bzr/workingtree.py 2017-12-22 16:24:08 +0000 |
29 | +++ breezy/bzr/workingtree.py 2018-02-15 22:17:55 +0000 |
30 | @@ -943,7 +943,7 @@ |
31 | self.add_parent_tree_id(parent_id) |
32 | other_tree.controldir.retire_bzrdir() |
33 | |
34 | - def extract(self, file_id, format=None): |
35 | + def extract(self, sub_path, file_id=None, format=None): |
36 | """Extract a subtree from this tree. |
37 | |
38 | A new branch will be created, relative to the path for this tree. |
39 | @@ -958,7 +958,6 @@ |
40 | |
41 | with self.lock_tree_write(): |
42 | self.flush() |
43 | - sub_path = self.id2path(file_id) |
44 | branch_transport = mkdirs(sub_path) |
45 | if format is None: |
46 | format = self.controldir.cloning_metadir() |
47 | @@ -985,6 +984,8 @@ |
48 | # FIXME: Support nested trees |
49 | my_inv = self.root_inventory |
50 | child_inv = inventory.Inventory(root_id=None) |
51 | + if file_id is None: |
52 | + file_id = self.path2id(sub_path) |
53 | new_root = my_inv[file_id] |
54 | my_inv.remove_recursive_id(file_id) |
55 | new_root.parent_id = None |
56 | |
57 | === modified file 'breezy/ignores.py' |
58 | --- breezy/ignores.py 2017-11-12 13:31:49 +0000 |
59 | +++ breezy/ignores.py 2018-02-15 22:17:55 +0000 |
60 | @@ -225,5 +225,5 @@ |
61 | finally: |
62 | f.close() |
63 | |
64 | - if not tree.path2id(breezy.IGNORE_FILENAME): |
65 | + if not tree.is_versioned(breezy.IGNORE_FILENAME): |
66 | tree.add([breezy.IGNORE_FILENAME]) |
67 | |
68 | === modified file 'breezy/plugins/fastimport/tests/test_generic_processor.py' |
69 | --- breezy/plugins/fastimport/tests/test_generic_processor.py 2018-01-22 02:23:22 +0000 |
70 | +++ breezy/plugins/fastimport/tests/test_generic_processor.py 2018-02-15 22:17:55 +0000 |
71 | @@ -173,14 +173,12 @@ |
72 | str(expected_kind_changed_entry), kind_changed_files)) |
73 | |
74 | def assertContent(self, branch, tree, path, content): |
75 | - file_id = tree.path2id(path) |
76 | with branch.lock_read(): |
77 | - self.assertEqual(tree.get_file_text(path, file_id), content) |
78 | + self.assertEqual(tree.get_file_text(path), content) |
79 | |
80 | def assertSymlinkTarget(self, branch, tree, path, target): |
81 | - file_id = tree.path2id(path) |
82 | with branch.lock_read(): |
83 | - self.assertEqual(tree.get_symlink_target(path, file_id), target) |
84 | + self.assertEqual(tree.get_symlink_target(path), target) |
85 | |
86 | def assertExecutable(self, branch, tree, path, executable): |
87 | with branch.lock_read(): |
88 | |
89 | === modified file 'breezy/rename_map.py' |
90 | --- breezy/rename_map.py 2017-11-12 17:53:35 +0000 |
91 | +++ breezy/rename_map.py 2018-02-15 22:17:55 +0000 |
92 | @@ -146,7 +146,7 @@ |
93 | while True: |
94 | child = path |
95 | path = osutils.dirname(path) |
96 | - if self.tree.path2id(path) is not None: |
97 | + if self.tree.is_versioned(path): |
98 | break |
99 | required_parents.setdefault(path, []).append(child) |
100 | require_ids = {} |
101 | |
102 | === modified file 'breezy/tests/__init__.py' |
103 | --- breezy/tests/__init__.py 2017-11-12 13:53:51 +0000 |
104 | +++ breezy/tests/__init__.py 2018-02-15 22:17:55 +0000 |
105 | @@ -2865,7 +2865,7 @@ |
106 | for p in path: |
107 | self.assertInWorkingTree(p, tree=tree) |
108 | else: |
109 | - self.assertIsNot(tree.path2id(path), None, |
110 | + self.assertTrue(tree.is_versioned(path), |
111 | path+' not in working tree.') |
112 | |
113 | def assertNotInWorkingTree(self, path, root_path='.', tree=None): |
114 | @@ -2876,7 +2876,7 @@ |
115 | for p in path: |
116 | self.assertNotInWorkingTree(p, tree=tree) |
117 | else: |
118 | - self.assertIs(tree.path2id(path), None, path+' in working tree.') |
119 | + self.assertFalse(tree.is_versioned(path), path+' in working tree.') |
120 | |
121 | |
122 | class TestCaseWithTransport(TestCaseInTempDir): |
123 | |
124 | === modified file 'breezy/tests/blackbox/test_mv.py' |
125 | --- breezy/tests/blackbox/test_mv.py 2017-11-12 13:53:51 +0000 |
126 | +++ breezy/tests/blackbox/test_mv.py 2018-02-15 22:17:55 +0000 |
127 | @@ -453,8 +453,8 @@ |
128 | self.assertEqual(out, '') |
129 | self.assertEqual(err, 'a => b\nc => d\n') |
130 | tree = workingtree.WorkingTree.open('tree') |
131 | - self.assertIsNot(None, tree.path2id('b')) |
132 | - self.assertIsNot(None, tree.path2id('d')) |
133 | + self.assertTrue(tree.is_versioned('b')) |
134 | + self.assertTrue(tree.is_versioned('d')) |
135 | |
136 | def test_mv_auto_one_path(self): |
137 | self.make_abcd_tree() |
138 | @@ -462,8 +462,8 @@ |
139 | self.assertEqual(out, '') |
140 | self.assertEqual(err, 'a => b\nc => d\n') |
141 | tree = workingtree.WorkingTree.open('tree') |
142 | - self.assertIsNot(None, tree.path2id('b')) |
143 | - self.assertIsNot(None, tree.path2id('d')) |
144 | + self.assertTrue(tree.is_versioned('b')) |
145 | + self.assertTrue(tree.is_versioned('d')) |
146 | |
147 | def test_mv_auto_two_paths(self): |
148 | self.make_abcd_tree() |
149 | @@ -477,8 +477,8 @@ |
150 | self.assertEqual(out, '') |
151 | self.assertEqual(err, 'a => b\nc => d\n') |
152 | tree = workingtree.WorkingTree.open('tree') |
153 | - self.assertIsNot(None, tree.path2id('a')) |
154 | - self.assertIsNot(None, tree.path2id('c')) |
155 | + self.assertTrue(tree.is_versioned('a')) |
156 | + self.assertTrue(tree.is_versioned('c')) |
157 | |
158 | def test_mv_no_auto_dry_run(self): |
159 | self.make_abcd_tree() |
160 | |
161 | === modified file 'breezy/tests/blackbox/test_remove.py' |
162 | --- breezy/tests/blackbox/test_remove.py 2017-11-12 13:53:51 +0000 |
163 | +++ breezy/tests/blackbox/test_remove.py 2018-02-15 22:17:55 +0000 |
164 | @@ -106,7 +106,7 @@ |
165 | tree.commit('save foo and bar') |
166 | os.unlink('bar') |
167 | self.run_bzr(['rm']) |
168 | - self.assertEqual(None, tree.path2id('bar')) |
169 | + self.assertFalse(tree.is_versioned('bar')) |
170 | # Running rm with a deleted file does not error. |
171 | out, err = self.run_bzr(['rm']) |
172 | self.assertEqual('', out) |
173 | |
174 | === modified file 'breezy/tests/blackbox/test_repair_workingtree.py' |
175 | --- breezy/tests/blackbox/test_repair_workingtree.py 2017-08-26 13:58:53 +0000 |
176 | +++ breezy/tests/blackbox/test_repair_workingtree.py 2018-02-15 22:17:55 +0000 |
177 | @@ -65,10 +65,10 @@ |
178 | def test_repair_forced(self): |
179 | tree = self.make_initial_tree() |
180 | tree.rename_one('dir', 'alt_dir') |
181 | - self.assertIsNot(None, tree.path2id('alt_dir')) |
182 | + self.assertTrue(tree.is_versioned('alt_dir')) |
183 | self.run_bzr('repair-workingtree -d tree --force') |
184 | # This requires the tree has reloaded the working state |
185 | - self.assertIs(None, tree.path2id('alt_dir')) |
186 | + self.assertFalse(tree.is_versioned('alt_dir')) |
187 | self.assertPathExists('tree/alt_dir') |
188 | |
189 | def test_repair_corrupted_dirstate(self): |
190 | |
191 | === modified file 'breezy/tests/per_intertree/__init__.py' |
192 | --- breezy/tests/per_intertree/__init__.py 2017-11-12 13:53:51 +0000 |
193 | +++ breezy/tests/per_intertree/__init__.py 2018-02-15 22:17:55 +0000 |
194 | @@ -62,7 +62,7 @@ |
195 | raise tests.TestNotApplicable('cannot represent unversioned files') |
196 | |
197 | def not_applicable_if_missing_in(self, relpath, tree): |
198 | - if not tree.path2id(relpath): |
199 | + if not tree.is_versioned(relpath): |
200 | # The locked test trees conversion could not preserve the missing |
201 | # file status. This is normal (e.g. InterDirstateTree falls back |
202 | # to InterTree if the basis is not a DirstateRevisionTree, and |
203 | |
204 | === modified file 'breezy/tests/per_tree/test_test_trees.py' |
205 | --- breezy/tests/per_tree/test_test_trees.py 2018-02-03 13:39:29 +0000 |
206 | +++ breezy/tests/per_tree/test_test_trees.py 2018-02-15 22:17:55 +0000 |
207 | @@ -49,6 +49,9 @@ |
208 | self.assertEqual( |
209 | {'', 'a', 'b', 'b/c'}, |
210 | set(tree.all_versioned_paths())) |
211 | + self.assertTrue(tree.is_versioned('a')) |
212 | + self.assertTrue(tree.is_versioned('b')) |
213 | + self.assertTrue(tree.is_versioned('b/c')) |
214 | self.assertEqual( |
215 | [(p, tree.path2id(p)) for p in ['', 'a', 'b', 'b/c']], |
216 | [(path, node.file_id) for path, node in tree.iter_entries_by_dir()]) |
217 | |
218 | === modified file 'breezy/tests/per_tree/test_tree.py' |
219 | --- breezy/tests/per_tree/test_tree.py 2018-01-12 08:52:43 +0000 |
220 | +++ breezy/tests/per_tree/test_tree.py 2018-02-15 22:17:55 +0000 |
221 | @@ -116,6 +116,10 @@ |
222 | if root_id is not None: |
223 | self.assertIsInstance(root_id, str) |
224 | |
225 | + def test_is_versioned(self): |
226 | + self.assertTrue(tree.is_versioned('')) |
227 | + self.assertFalse(tree.is_versioned('blah')) |
228 | + |
229 | |
230 | class TestFileIds(TestCaseWithTree): |
231 | |
232 | @@ -124,13 +128,10 @@ |
233 | work_tree = self.make_branch_and_tree('wt') |
234 | tree = self.get_tree_no_parents_abc_content(work_tree) |
235 | a_id = tree.path2id('a') |
236 | - tree.lock_read() |
237 | - try: |
238 | + with tree.lock_read(): |
239 | self.assertEqual(u'a', tree.id2path(a_id)) |
240 | # other ids give an error- don't return None for this case |
241 | self.assertRaises(errors.NoSuchId, tree.id2path, 'a') |
242 | - finally: |
243 | - tree.unlock() |
244 | |
245 | def test_all_file_ids(self): |
246 | work_tree = self.make_branch_and_tree('wt') |
247 | |
248 | === modified file 'breezy/tests/per_workingtree/test_get_file_mtime.py' |
249 | --- breezy/tests/per_workingtree/test_get_file_mtime.py 2018-01-12 08:52:43 +0000 |
250 | +++ breezy/tests/per_workingtree/test_get_file_mtime.py 2018-02-15 22:17:55 +0000 |
251 | @@ -111,9 +111,6 @@ |
252 | one_id = tree.path2id('one') |
253 | |
254 | os.remove('tree/one') |
255 | - tree.lock_read() |
256 | - try: |
257 | + with tree.lock_read(): |
258 | self.assertRaises(errors.NoSuchFile, tree.get_file_mtime, 'one') |
259 | - finally: |
260 | - tree.unlock() |
261 | |
262 | |
263 | === modified file 'breezy/tests/per_workingtree/test_inv.py' |
264 | --- breezy/tests/per_workingtree/test_inv.py 2017-11-24 09:25:13 +0000 |
265 | +++ breezy/tests/per_workingtree/test_inv.py 2018-02-15 22:17:55 +0000 |
266 | @@ -68,7 +68,7 @@ |
267 | wt.add(['foo', 'foo/bar'], ['foo-id', 'bar-id']) |
268 | wt.apply_inventory_delta([('foo', None, 'foo-id', None), |
269 | ('foo/bar', None, 'bar-id', None)]) |
270 | - self.assertIs(None, wt.path2id('foo')) |
271 | + self.assertFalse(wt.is_versioned('foo')) |
272 | |
273 | def test_rename_dir_with_children(self): |
274 | wt = self.make_branch_and_tree('.') |
275 | |
276 | === modified file 'breezy/tests/per_workingtree/test_read_working_inventory.py' |
277 | --- breezy/tests/per_workingtree/test_read_working_inventory.py 2017-06-10 01:39:46 +0000 |
278 | +++ breezy/tests/per_workingtree/test_read_working_inventory.py 2018-02-15 22:17:55 +0000 |
279 | @@ -41,8 +41,7 @@ |
280 | "non-inventory working trees") |
281 | # prepare for a series of changes that will modify the |
282 | # inventory |
283 | - tree.lock_write() |
284 | - try: |
285 | + with tree.lock_write(): |
286 | tree.set_root_id('new-root') |
287 | # having dirtied the inventory, we can now expect an |
288 | # InventoryModified exception when doing a read_working_inventory() |
289 | @@ -53,5 +52,3 @@ |
290 | pass |
291 | else: |
292 | self.assertEqual('new-root', tree.path2id('')) |
293 | - finally: |
294 | - tree.unlock() |
295 | |
296 | === modified file 'breezy/tests/per_workingtree/test_smart_add.py' |
297 | --- breezy/tests/per_workingtree/test_smart_add.py 2018-02-03 13:39:29 +0000 |
298 | +++ breezy/tests/per_workingtree/test_smart_add.py 2018-02-15 22:17:55 +0000 |
299 | @@ -84,7 +84,7 @@ |
300 | wt.unlock() |
301 | # and the disk state should be the same - reopen to check. |
302 | wt = wt.controldir.open_workingtree() |
303 | - self.assertEqual(wt.path2id('file'), None) |
304 | + self.assertFalse(wt.is_versioned('file')) |
305 | |
306 | def test_add_dot_from_root(self): |
307 | """Test adding . from the root of the tree.""" |
308 | @@ -93,7 +93,7 @@ |
309 | wt = self.make_branch_and_tree('.') |
310 | wt.smart_add((u".",)) |
311 | for path in paths: |
312 | - self.assertNotEqual(wt.path2id(path), None) |
313 | + self.assertTrue(wt.is_versioned(path)) |
314 | |
315 | def test_skip_nested_trees(self): |
316 | """Test smart-adding a nested tree ignors it and warns.""" |
317 | @@ -104,7 +104,7 @@ |
318 | warnings.append(args[0] % args[1:]) |
319 | self.overrideAttr(trace, 'warning', warning) |
320 | wt.smart_add((u".",)) |
321 | - self.assertIs(wt.path2id("nested"), None) |
322 | + self.assertFalse(wt.is_versioned("nested")) |
323 | self.assertEqual( |
324 | ['skipping nested tree %r' % nested_wt.basedir], warnings) |
325 | |
326 | @@ -115,7 +115,7 @@ |
327 | wt = self.make_branch_and_tree('.') |
328 | wt.smart_add((u".",)) |
329 | for path in paths: |
330 | - self.assertNotEqual(wt.path2id(path), None) |
331 | + self.assertTrue(wt.is_versioned(path)) |
332 | |
333 | def test_add_tree_from_above_tree(self): |
334 | """Test adding a tree from above the tree.""" |
335 | @@ -126,7 +126,7 @@ |
336 | wt = self.make_branch_and_tree('branch') |
337 | wt.smart_add(("branch",)) |
338 | for path in paths: |
339 | - self.assertNotEqual(wt.path2id(path), None) |
340 | + self.assertTrue(wt.is_versioned(path)) |
341 | |
342 | def test_add_above_tree_preserves_tree(self): |
343 | """Test nested trees are not affect by an add above them.""" |
344 | @@ -144,13 +144,13 @@ |
345 | child_tree = self.make_branch_and_tree('original/child') |
346 | wt.smart_add((".",)) |
347 | for path in paths: |
348 | - self.assertNotEqual((path, wt.path2id(path)), |
349 | - (path, None)) |
350 | + self.assertNotEqual((path, wt.is_versioned(path)), |
351 | + (path, False)) |
352 | for path in full_child_paths: |
353 | - self.assertEqual((path, wt.path2id(path)), |
354 | - (path, None)) |
355 | + self.assertEqual((path, wt.is_versioned(path)), |
356 | + (path, False)) |
357 | for path in child_paths: |
358 | - self.assertEqual(child_tree.path2id(path), None) |
359 | + self.assertFalse(child_tree.is_versioned(path)) |
360 | |
361 | def test_add_paths(self): |
362 | """Test smart-adding a list of paths.""" |
363 | @@ -159,7 +159,7 @@ |
364 | wt = self.make_branch_and_tree('.') |
365 | wt.smart_add(paths) |
366 | for path in paths: |
367 | - self.assertNotEqual(wt.path2id(path), None) |
368 | + self.assertTrue(wt.is_versioned(path)) |
369 | |
370 | def test_add_ignored_nested_paths(self): |
371 | """Test smart-adding a list of paths which includes ignored ones.""" |
372 | @@ -170,8 +170,7 @@ |
373 | self.build_tree(tree_shape) |
374 | wt.smart_add(add_paths) |
375 | for path in expected_paths: |
376 | - self.assertNotEqual(wt.path2id(path), None, |
377 | - "No id added for %s" % path) |
378 | + self.assertTrue(wt.is_versioned(path), "No id added for %s" % path) |
379 | |
380 | def test_add_non_existant(self): |
381 | """Test smart-adding a file that does not exist.""" |
382 | @@ -206,10 +205,10 @@ |
383 | wt.smart_add(['file1', 'file2', 'dir1', 'dir2']) |
384 | |
385 | for path in added_paths: |
386 | - self.assertNotEqual(None, wt.path2id(path.rstrip('/')), |
387 | + self.assertTrue(wt.is_versioned(path.rstrip('/')), |
388 | 'Failed to add path: %s' % (path,)) |
389 | for path in not_added: |
390 | - self.assertEqual(None, wt.path2id(path.rstrip('/')), |
391 | + self.assertFalse(wt.is_versioned(path.rstrip('/')), |
392 | 'Accidentally added path: %s' % (path,)) |
393 | |
394 | def test_add_file_in_unknown_dir(self): |
395 | |
396 | === modified file 'breezy/tests/per_workingtree/test_symlinks.py' |
397 | --- breezy/tests/per_workingtree/test_symlinks.py 2017-11-12 20:07:32 +0000 |
398 | +++ breezy/tests/per_workingtree/test_symlinks.py 2018-02-15 22:17:55 +0000 |
399 | @@ -42,8 +42,8 @@ |
400 | ('tree/link@', 'target'), |
401 | ]) |
402 | tree.smart_add(['tree/link']) |
403 | - self.assertIsNot(None, tree.path2id('link')) |
404 | - self.assertIs(None, tree.path2id('target')) |
405 | + self.assertTrue(tree.is_versioned('link')) |
406 | + self.assertFalse(tree.is_versioned('target')) |
407 | self.assertEqual('symlink', tree.kind('link')) |
408 | |
409 | def test_smart_add_symlink_pointing_outside(self): |
410 | @@ -52,8 +52,8 @@ |
411 | ('tree/link@', '../../../../target'), |
412 | ]) |
413 | tree.smart_add(['tree/link']) |
414 | - self.assertIsNot(None, tree.path2id('link')) |
415 | - self.assertIs(None, tree.path2id('target')) |
416 | + self.assertTrue(tree.is_versioned('link')) |
417 | + self.assertFalse(tree.is_versioned('target')) |
418 | self.assertEqual('symlink', tree.kind('link')) |
419 | |
420 | def test_add_file_under_symlink(self): |
421 | @@ -70,10 +70,10 @@ |
422 | ([u'dir', u'dir/file'], {})) |
423 | # should add the actual parent directory, not the apparent parent |
424 | # (which is actually a symlink) |
425 | - self.assertTrue(tree.path2id('dir/file')) |
426 | - self.assertTrue(tree.path2id('dir')) |
427 | - self.assertIs(None, tree.path2id('link')) |
428 | - self.assertIs(None, tree.path2id('link/file')) |
429 | + self.assertTrue(tree.is_versioned('dir/file')) |
430 | + self.assertTrue(tree.is_versioned('dir')) |
431 | + self.assertFalse(tree.is_versioned('link')) |
432 | + self.assertFalse(tree.is_versioned('link/file')) |
433 | |
434 | |
435 | class TestKindChanges(TestCaseWithWorkingTree): |
436 | |
437 | === modified file 'breezy/tests/per_workingtree/test_unversion.py' |
438 | --- breezy/tests/per_workingtree/test_unversion.py 2017-12-22 16:24:08 +0000 |
439 | +++ breezy/tests/per_workingtree/test_unversion.py 2018-02-15 22:17:55 +0000 |
440 | @@ -61,7 +61,9 @@ |
441 | c_id = tree.path2id('c') |
442 | # within a lock unversion should take effect |
443 | tree.lock_write() |
444 | + self.assertTrue(tree.is_versioned('a')) |
445 | tree.unversion(['a', 'b']) |
446 | + self.assertFalse(tree.is_versioned('a')) |
447 | self.assertFalse(tree.has_id(a_id)) |
448 | self.assertFalse(tree.has_id(b_id)) |
449 | self.assertTrue(tree.has_id(c_id)) |
450 | @@ -111,8 +113,7 @@ |
451 | b_id = tree.path2id('a/b') |
452 | c_id = tree.path2id('a/c') |
453 | d_id = tree.path2id('d') |
454 | - tree.lock_write() |
455 | - try: |
456 | + with tree.lock_write(): |
457 | tree.unversion(['a/b', 'a']) |
458 | self.assertFalse(tree.has_id(a_id)) |
459 | self.assertFalse(tree.has_id(b_id)) |
460 | @@ -123,8 +124,6 @@ |
461 | self.assertTrue(tree.has_filename('a/b')) |
462 | self.assertTrue(tree.has_filename('a/c')) |
463 | self.assertTrue(tree.has_filename('d')) |
464 | - finally: |
465 | - tree.unlock() |
466 | |
467 | def test_unversion_renamed(self): |
468 | tree = self.make_branch_and_tree('a') |
469 | |
470 | === modified file 'breezy/tests/per_workingtree/test_workingtree.py' |
471 | --- breezy/tests/per_workingtree/test_workingtree.py 2018-01-15 06:07:39 +0000 |
472 | +++ breezy/tests/per_workingtree/test_workingtree.py 2018-02-15 22:17:55 +0000 |
473 | @@ -420,9 +420,9 @@ |
474 | self.assertFalse(cloned_transport.has('deleted')) |
475 | self.assertTrue(cloned_transport.has('added')) |
476 | self.assertFalse(cloned_transport.has('notadded')) |
477 | - self.assertIsNot(None, cloned.path2id('added')) |
478 | - self.assertEqual(None, cloned.path2id('deleted')) |
479 | - self.assertEqual(None, cloned.path2id('notadded')) |
480 | + self.assertTrue(cloned.is_versioned('added')) |
481 | + self.assertFalse(cloned.is_versioned('deleted')) |
482 | + self.assertFalse(cloned.is_versioned('notadded')) |
483 | |
484 | def test_basis_tree_returns_last_revision(self): |
485 | wt = self.make_branch_and_tree('.') |
486 | @@ -687,15 +687,12 @@ |
487 | # merge_modified stores a map from file id to hash |
488 | tree = self.make_branch_and_tree('tree') |
489 | self.build_tree_contents([('tree/somefile', 'hello')]) |
490 | - tree.lock_write() |
491 | - try: |
492 | + with tree.lock_write(): |
493 | tree.add(['somefile']) |
494 | d = {tree.path2id('somefile'): osutils.sha_string('hello')} |
495 | tree.set_merge_modified(d) |
496 | mm = tree.merge_modified() |
497 | self.assertEqual(mm, d) |
498 | - finally: |
499 | - tree.unlock() |
500 | mm = tree.merge_modified() |
501 | self.assertEqual(mm, d) |
502 | |
503 | @@ -971,7 +968,6 @@ |
504 | 'nonexistant') |
505 | self.build_tree(['file']) |
506 | tree.add('file') |
507 | - file_id = tree.path2id('file') |
508 | tree.commit('foo') |
509 | tree.remove('file') |
510 | self.assertRaises(errors.NoSuchFile, tree.get_file_sha1, |
511 | |
512 | === modified file 'breezy/tests/test_bundle.py' |
513 | --- breezy/tests/test_bundle.py 2017-11-24 09:25:13 +0000 |
514 | +++ breezy/tests/test_bundle.py 2018-02-15 22:17:55 +0000 |
515 | @@ -219,14 +219,14 @@ |
516 | self.assertEqual(btree.path2id("grandparent/parent"), "b") |
517 | self.assertEqual(btree.path2id("grandparent/parent/file"), "c") |
518 | |
519 | - self.assertTrue(btree.path2id("grandparent2") is None) |
520 | - self.assertTrue(btree.path2id("grandparent2/parent") is None) |
521 | - self.assertTrue(btree.path2id("grandparent2/parent/file") is None) |
522 | + self.assertIs(btree.path2id("grandparent2"), None) |
523 | + self.assertIs(btree.path2id("grandparent2/parent"), None) |
524 | + self.assertIs(btree.path2id("grandparent2/parent/file"), None) |
525 | |
526 | btree.note_rename("grandparent", "grandparent2") |
527 | - self.assertTrue(btree.old_path("grandparent") is None) |
528 | - self.assertTrue(btree.old_path("grandparent/parent") is None) |
529 | - self.assertTrue(btree.old_path("grandparent/parent/file") is None) |
530 | + self.assertIs(btree.old_path("grandparent"), None) |
531 | + self.assertIs(btree.old_path("grandparent/parent"), None) |
532 | + self.assertIs(btree.old_path("grandparent/parent/file"), None) |
533 | |
534 | self.assertEqual(btree.id2path("a"), "grandparent2") |
535 | self.assertEqual(btree.id2path("b"), "grandparent2/parent") |
536 | @@ -351,7 +351,7 @@ |
537 | self.assertEqual(btree.get_file(btree.id2path("c")).read(), "Hello\n") |
538 | btree.note_deletion("grandparent/parent/file") |
539 | self.assertTrue(btree.id2path("c") is None) |
540 | - self.assertTrue(btree.path2id("grandparent/parent/file") is None) |
541 | + self.assertFalse(btree.is_versioned("grandparent/parent/file")) |
542 | |
543 | def sorted_ids(self, tree): |
544 | ids = sorted(tree.all_file_ids()) |
545 | |
546 | === modified file 'breezy/tests/test_commit.py' |
547 | --- breezy/tests/test_commit.py 2017-11-13 22:52:33 +0000 |
548 | +++ breezy/tests/test_commit.py 2018-02-15 22:17:55 +0000 |
549 | @@ -89,7 +89,6 @@ |
550 | with open('hello', 'w') as f: f.write('hello world') |
551 | wt.add('hello') |
552 | rev1 = wt.commit(message='add hello') |
553 | - file_id = wt.path2id('hello') |
554 | |
555 | with open('hello', 'w') as f: f.write('version 2') |
556 | rev2 = wt.commit(message='commit 2') |
557 | @@ -616,12 +615,9 @@ |
558 | tree.remove(['a', 'b']) |
559 | tree.commit('removed a', specific_files='a') |
560 | basis = tree.basis_tree() |
561 | - tree.lock_read() |
562 | - try: |
563 | - self.assertIs(None, basis.path2id('a')) |
564 | - self.assertFalse(basis.path2id('b') is None) |
565 | - finally: |
566 | - tree.unlock() |
567 | + with tree.lock_read(): |
568 | + self.assertFalse(basis.is_versioned('a')) |
569 | + self.assertTrue(basis.is_versioned('b')) |
570 | |
571 | def test_commit_saves_1ms_timestamp(self): |
572 | """Passing in a timestamp is saved with 1ms resolution""" |
573 | |
574 | === modified file 'breezy/tests/test_inv.py' |
575 | --- breezy/tests/test_inv.py 2018-01-14 05:14:06 +0000 |
576 | +++ breezy/tests/test_inv.py 2018-02-15 22:17:55 +0000 |
577 | @@ -622,7 +622,7 @@ |
578 | inv.add(file1) |
579 | delta = [(u'path', None, 'file-id', None)] |
580 | res_inv = self.apply_delta(self, inv, delta, invalid_delta=False) |
581 | - self.assertEqual(None, res_inv.path2id('path')) |
582 | + self.assertFalse(res_inv.is_versioned('path')) |
583 | self.assertRaises(errors.NoSuchId, res_inv.id2path, 'file-id') |
584 | |
585 | def test_rename_file(self): |
586 | @@ -632,7 +632,7 @@ |
587 | file2 = self.make_file_ie(name='path2', parent_id=inv.root.file_id) |
588 | delta = [(u'path', 'path2', 'file-id', file2)] |
589 | res_inv = self.apply_delta(self, inv, delta, invalid_delta=False) |
590 | - self.assertEqual(None, res_inv.path2id('path')) |
591 | + self.assertFalse(res_inv.is_versioned('path')) |
592 | self.assertEqual('file-id', res_inv.path2id('path2')) |
593 | |
594 | def test_replaced_at_new_path(self): |
595 | @@ -676,7 +676,7 @@ |
596 | res_inv = self.apply_delta(self, inv, delta, invalid_delta=False) |
597 | # The file should be accessible under the new path |
598 | self.assertEqual('file-id-1', res_inv.path2id('dir2/name1')) |
599 | - self.assertEqual(None, res_inv.path2id('dir2/name2')) |
600 | + self.assertFalse(res_inv.is_versioned('dir2/name2')) |
601 | self.assertEqual('file-id-2', res_inv.path2id('name2')) |
602 | |
603 | def test_is_root(self): |
604 | |
605 | === modified file 'breezy/tests/test_merge.py' |
606 | --- breezy/tests/test_merge.py 2017-11-24 09:25:13 +0000 |
607 | +++ breezy/tests/test_merge.py 2018-02-15 22:17:55 +0000 |
608 | @@ -2300,7 +2300,7 @@ |
609 | wt.set_parent_ids(['D-id']) |
610 | wt.branch.set_last_revision_info(3, 'D-id') |
611 | wt.revert() |
612 | - self.assertIs(None, wt.path2id('foo')) |
613 | + self.assertFalse(wt.is_versioned('foo')) |
614 | conflicts = wt.merge_from_branch(wt.branch, to_revision='F-id') |
615 | self.assertEqual(0, conflicts) |
616 | self.assertEqual('foo-id', wt.path2id('foo')) |
617 | |
618 | === modified file 'breezy/tests/test_transform.py' |
619 | --- breezy/tests/test_transform.py 2017-11-12 20:07:32 +0000 |
620 | +++ breezy/tests/test_transform.py 2018-02-15 22:17:55 +0000 |
621 | @@ -920,7 +920,7 @@ |
622 | self.assertEqual([NonDirectoryParent('Created directory', 'parent.new', |
623 | 'parent-id')], cooked_conflicts) |
624 | tt.apply() |
625 | - self.assertEqual(None, self.wt.path2id('parent')) |
626 | + self.assertFalse(self.wt.is_versioned('parent')) |
627 | self.assertEqual('parent-id', self.wt.path2id('parent.new')) |
628 | |
629 | def test_resolve_conflicts_wrong_new_parent_kind(self): |
630 | @@ -936,7 +936,7 @@ |
631 | self.assertEqual({('non-directory parent', 'Created directory', |
632 | 'new-3')}, raw_conflicts) |
633 | tt.apply() |
634 | - self.assertEqual(None, self.wt.path2id('parent')) |
635 | + self.assertFalse(self.wt.is_versioned('parent')) |
636 | self.assertEqual('parent-id', self.wt.path2id('parent.new')) |
637 | |
638 | def test_resolve_conflicts_wrong_parent_kind_unversioned(self): |
639 | @@ -950,8 +950,8 @@ |
640 | tt.create_file('contents', parent_id) |
641 | resolve_conflicts(tt) |
642 | tt.apply() |
643 | - self.assertIs(None, self.wt.path2id('parent')) |
644 | - self.assertIs(None, self.wt.path2id('parent.new')) |
645 | + self.assertFalse(self.wt.is_versioned('parent')) |
646 | + self.assertFalse(self.wt.is_versioned('parent.new')) |
647 | |
648 | def test_resolve_conflicts_missing_parent(self): |
649 | wt = self.make_branch_and_tree('.') |
650 | @@ -2896,7 +2896,7 @@ |
651 | preview.unversion_file(preview.trans_id_file_id('deleted-id')) |
652 | preview_tree = preview.get_preview_tree() |
653 | self.assertEqual('unchanged-id', preview_tree.path2id('unchanged')) |
654 | - self.assertIs(None, preview_tree.path2id('deleted')) |
655 | + self.assertFalse(preview_tree.is_versioned('deleted')) |
656 | |
657 | def test_path2id_created(self): |
658 | tree = self.make_branch_and_tree('tree') |
659 | @@ -2921,7 +2921,7 @@ |
660 | preview.adjust_path('child', new_parent, |
661 | preview.trans_id_file_id('child-id')) |
662 | preview_tree = preview.get_preview_tree() |
663 | - self.assertIs(None, preview_tree.path2id('old_parent/child')) |
664 | + self.assertFalse(preview_tree.is_versioned('old_parent/child')) |
665 | self.assertEqual('child-id', preview_tree.path2id('new_parent/child')) |
666 | |
667 | def test_path2id_renamed_parent(self): |
668 | @@ -2934,7 +2934,7 @@ |
669 | preview.adjust_path('new_name', preview.root, |
670 | preview.trans_id_file_id('parent-id')) |
671 | preview_tree = preview.get_preview_tree() |
672 | - self.assertIs(None, preview_tree.path2id('old_name/child')) |
673 | + self.assertFalse(preview_tree.is_versioned('old_name/child')) |
674 | self.assertEqual('child-id', preview_tree.path2id('new_name/child')) |
675 | |
676 | def assertMatchingIterEntries(self, tt, specific_file_ids=None): |
677 | |
678 | === modified file 'breezy/tests/test_uncommit.py' |
679 | --- breezy/tests/test_uncommit.py 2017-06-10 00:17:06 +0000 |
680 | +++ breezy/tests/test_uncommit.py 2018-02-15 22:17:55 +0000 |
681 | @@ -51,7 +51,7 @@ |
682 | # The file should not be removed |
683 | self.assertPathExists('tree/two') |
684 | # And it should still be listed as added |
685 | - self.assertIsNot(None, tree.path2id('two')) |
686 | + self.assertTrue(tree.is_versioned('two')) |
687 | |
688 | def test_uncommit_bound(self): |
689 | tree, history = self.make_linear_tree() |
690 | |
691 | === modified file 'breezy/tests/test_upstream_import.py' |
692 | --- breezy/tests/test_upstream_import.py 2017-11-12 20:07:32 +0000 |
693 | +++ breezy/tests/test_upstream_import.py 2018-02-15 22:17:55 +0000 |
694 | @@ -233,8 +233,8 @@ |
695 | tree.lock_write() |
696 | try: |
697 | importer(tree, archive_file) |
698 | - self.assertTrue(tree.path2id('README') is not None) |
699 | - self.assertTrue(tree.path2id('FEEDME') is not None) |
700 | + self.assertTrue(tree.is_versioned('README')) |
701 | + self.assertTrue(tree.is_versioned('FEEDME')) |
702 | self.assertTrue(os.path.isfile(tree.abspath('README'))) |
703 | self.assertEqual(tree.stored_kind('README'), 'file') |
704 | self.assertEqual(tree.stored_kind('FEEDME'), 'file') |
705 | @@ -246,7 +246,7 @@ |
706 | warnings.simplefilter('ignore') |
707 | archive_file = self.make_archive2(builder, subdir) |
708 | importer(tree, archive_file) |
709 | - self.assertTrue(tree.path2id('README') is not None) |
710 | + self.assertTrue(tree.is_versioned('README')) |
711 | # Ensure the second version of the file is used. |
712 | self.assertEqual(tree.get_file_text('README'), 'Wow?') |
713 | self.assertTrue(not os.path.exists(tree.abspath('FEEDME'))) |
714 | @@ -258,13 +258,13 @@ |
715 | tar_file = self.make_messed_tar() |
716 | tree = BzrDir.create_standalone_workingtree('tree') |
717 | import_tar(tree, tar_file) |
718 | - self.assertTrue(tree.path2id('project-0.1/README') is not None) |
719 | + self.assertTrue(tree.is_versioned('project-0.1/README')) |
720 | |
721 | def test_untar_gzip(self): |
722 | tar_file = self.make_tar(mode='w:gz') |
723 | tree = BzrDir.create_standalone_workingtree('tree') |
724 | import_tar(tree, tar_file) |
725 | - self.assertTrue(tree.path2id('README') is not None) |
726 | + self.assertTrue(tree.is_versioned('README')) |
727 | |
728 | def test_no_crash_with_bzrdir(self): |
729 | tar_file = self.make_tar_with_bzrdir() |
730 | |
731 | === modified file 'breezy/tests/test_workingtree_4.py' |
732 | --- breezy/tests/test_workingtree_4.py 2017-11-19 18:35:20 +0000 |
733 | +++ breezy/tests/test_workingtree_4.py 2018-02-15 22:17:55 +0000 |
734 | @@ -303,7 +303,7 @@ |
735 | state.update_basis_by_delta = log_update_basis_by_delta |
736 | basis = tree.basis_tree() |
737 | self.assertEqual('a-id', basis.path2id('a')) |
738 | - self.assertEqual(None, basis.path2id('b')) |
739 | + self.assertFalse(basis.is_versioned('b')) |
740 | def fail_set_parent_trees(trees, ghosts): |
741 | raise AssertionError('dirstate.set_parent_trees() was called') |
742 | state.set_parent_trees = fail_set_parent_trees |
743 | @@ -341,7 +341,7 @@ |
744 | # Re-open with the new reference |
745 | wt = wt.controldir.open_workingtree() |
746 | wt.set_parent_trees([('C', b_c.repository.revision_tree('C'))]) |
747 | - self.assertEqual(None, wt.basis_tree().path2id('b')) |
748 | + self.assertFalse(wt.basis_tree().is_versioned('b')) |
749 | |
750 | def test_new_dirstate_on_new_lock(self): |
751 | # until we have detection for when a dirstate can be reused, we |
752 | |
753 | === modified file 'breezy/tree.py' |
754 | --- breezy/tree.py 2018-01-12 08:52:43 +0000 |
755 | +++ breezy/tree.py 2018-02-15 22:17:55 +0000 |
756 | @@ -533,6 +533,14 @@ |
757 | """Return the id for path in this tree.""" |
758 | raise NotImplementedError(self.path2id) |
759 | |
760 | + def is_versioned(self, path): |
761 | + """Check whether path is versioned. |
762 | + |
763 | + :param path: Path to check |
764 | + :return: boolean |
765 | + """ |
766 | + return (self.path2id(path) is not None) |
767 | + |
768 | def paths2ids(self, paths, trees=[], require_versioned=True): |
769 | """Return all the ids that can be reached by walking from paths. |
770 | |
771 | |
772 | === modified file 'breezy/upstream_import.py' |
773 | --- breezy/upstream_import.py 2017-09-26 00:55:04 +0000 |
774 | +++ breezy/upstream_import.py 2018-02-15 22:17:55 +0000 |
775 | @@ -182,7 +182,7 @@ |
776 | |
777 | |
778 | def do_directory(tt, trans_id, tree, relative_path, path): |
779 | - if isdir(path) and tree.path2id(relative_path) is not None: |
780 | + if isdir(path) and tree.is_versioned(relative_path): |
781 | tt.cancel_deletion(trans_id) |
782 | else: |
783 | tt.create_directory(trans_id) |
784 | |
785 | === modified file 'breezy/workingtree.py' |
786 | --- breezy/workingtree.py 2018-01-15 06:07:39 +0000 |
787 | +++ breezy/workingtree.py 2018-02-15 22:17:55 +0000 |
788 | @@ -813,7 +813,7 @@ |
789 | # checkout in a subdirectory. This can be avoided by not adding |
790 | # it. mbp 20070306 |
791 | |
792 | - def extract(self, file_id, format=None): |
793 | + def extract(self, path, file_id=None, format=None): |
794 | """Extract a subtree from this tree. |
795 | |
796 | A new branch will be created, relative to the path for this tree. |
Looks sensible. Probably work an assert helper for all versioned or similar at some point?