Merge lp:~jelmer/brz/setting-file-ids into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merged at revision: 6742
Proposed branch: lp:~jelmer/brz/setting-file-ids
Merge into: lp:brz
Diff against target: 81 lines (+25/-0)
3 files modified
breezy/tests/per_workingtree/test_workingtree.py (+5/-0)
breezy/workingtree.py (+15/-0)
doc/en/release-notes/brz-3.0.txt (+5/-0)
To merge this branch: bzr merge lp:~jelmer/brz/setting-file-ids
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+328273@code.launchpad.net

Commit message

Add a ``WorkingTreeFormat.supports_setting_file_ids`` property, which can be set for svn/git working tree formats.

Description of the change

Add a ``WorkingTreeFormat.supports_setting_file_ids`` property, which can be set for svn/git working tree formats.

The idea is that tests can be skipped based on this property.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Makes sense.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/tests/per_workingtree/test_workingtree.py'
2--- breezy/tests/per_workingtree/test_workingtree.py 2017-06-11 18:41:26 +0000
3+++ breezy/tests/per_workingtree/test_workingtree.py 2017-07-30 19:18:06 +0000
4@@ -1232,3 +1232,8 @@
5 self.assertSubset(
6 [self.workingtree_format.supports_versioned_directories],
7 (True, False))
8+
9+ def test_supports_setting_file_ids(self):
10+ self.assertSubset(
11+ [self.workingtree_format.supports_setting_file_ids],
12+ (True, False))
13
14=== modified file 'breezy/workingtree.py'
15--- breezy/workingtree.py 2017-07-21 13:41:26 +0000
16+++ breezy/workingtree.py 2017-07-30 19:18:06 +0000
17@@ -76,6 +76,11 @@
18 ERROR_PATH_NOT_FOUND = 3 # WindowsError errno code, equivalent to ENOENT
19
20
21+class SettingFileIdUnsupported(errors.BzrError):
22+
23+ _fmt = "This format does not support setting file ids."""
24+
25+
26 class TreeEntry(object):
27 """An entry that implements the minimum interface used by commands.
28
29@@ -229,6 +234,9 @@
30 def supports_views(self):
31 return self.views.supports_views()
32
33+ def supports_setting_file_ids(self):
34+ return self._format.supports_setting_file_ids
35+
36 def get_config_stack(self):
37 """Retrieve the config stack for this tree.
38
39@@ -771,6 +779,8 @@
40 """See MutableTree.mkdir()."""
41 if file_id is None:
42 file_id = generate_ids.gen_file_id(os.path.basename(path))
43+ elif not self.supports_setting_file_ids():
44+ raise SettingFileIdUnsupported()
45 os.mkdir(self.abspath(path))
46 self.add(path, file_id, 'directory')
47 return file_id
48@@ -1296,6 +1306,8 @@
49 @needs_tree_write_lock
50 def set_root_id(self, file_id):
51 """Set the root id for this tree."""
52+ if not self.supports_setting_file_ids():
53+ raise SettingFileIdUnsupported()
54 # for compatability
55 if file_id is None:
56 raise ValueError(
57@@ -1732,6 +1744,9 @@
58
59 supports_versioned_directories = None
60
61+ supports_setting_file_ids = True
62+ """If this format allows setting the file id."""
63+
64 def initialize(self, controldir, revision_id=None, from_branch=None,
65 accelerator_tree=None, hardlink=False):
66 """Initialize a new working tree in controldir.
67
68=== modified file 'doc/en/release-notes/brz-3.0.txt'
69--- doc/en/release-notes/brz-3.0.txt 2017-07-23 22:06:41 +0000
70+++ doc/en/release-notes/brz-3.0.txt 2017-07-30 19:18:06 +0000
71@@ -172,6 +172,11 @@
72 * A new ``Repository.iter_revisions`` method has been added.
73 (Jelmer Vernooij)
74
75+ * A new ``WorkingTreeFormat.supports_setting_file_ids`` property
76+ has been added that can be set to False to indicate a working tree
77+ doesn't support e.g. passing a file_id into ``WorkingTree.mkdir``.
78+ (Jelmer Vernooij, #1707533)
79+
80 Internals
81 *********
82

Subscribers

People subscribed via source and target branches