Merge lp:~jelmer/brz/supports-merge-modified into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/supports-merge-modified
Merge into: lp:brz
Diff against target: 95 lines (+20/-15)
4 files modified
breezy/merge.py (+3/-4)
breezy/tests/per_workingtree/test_workingtree.py (+8/-8)
breezy/transform.py (+1/-3)
breezy/workingtree.py (+8/-0)
To merge this branch: bzr merge lp:~jelmer/brz/supports-merge-modified
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+341604@code.launchpad.net

Commit message

Add a WorkingTree.supports_merge_modified() method.

Description of the change

Add a WorkingTree.supports_merge_modified() method.

This indicates whether calls to WorkingTree.set_merge_modified() will
raise UnsupportedOperation. This allows e.g. merge to avoid calculating
merge modified hashes if the tree doesn't support them.

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

Thanks.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/merge.py'
2--- breezy/merge.py 2018-03-02 01:33:39 +0000
3+++ breezy/merge.py 2018-03-19 01:11:01 +0000
4@@ -1065,6 +1065,8 @@
5 return result
6
7 def write_modified(self, results):
8+ if not self.working_tree.supports_merge_modified():
9+ return
10 modified_hashes = {}
11 for path in results.modified_paths:
12 wt_relpath = self.working_tree.relpath(path)
13@@ -1075,10 +1077,7 @@
14 if hash is None:
15 continue
16 modified_hashes[file_id] = hash
17- try:
18- self.working_tree.set_merge_modified(modified_hashes)
19- except errors.UnsupportedOperation:
20- pass # Well, whatever.
21+ self.working_tree.set_merge_modified(modified_hashes)
22
23 @staticmethod
24 def parent(entry, file_id):
25
26=== modified file 'breezy/tests/per_workingtree/test_workingtree.py'
27--- breezy/tests/per_workingtree/test_workingtree.py 2018-03-04 02:57:55 +0000
28+++ breezy/tests/per_workingtree/test_workingtree.py 2018-03-19 01:11:01 +0000
29@@ -711,17 +711,17 @@
30 with tree.lock_write():
31 tree.add(['somefile'])
32 d = {tree.path2id('somefile'): osutils.sha_string('hello')}
33- try:
34+ if tree.supports_merge_modified():
35 tree.set_merge_modified(d)
36- except errors.UnsupportedOperation:
37+ mm = tree.merge_modified()
38+ self.assertEqual(mm, d)
39+ else:
40+ self.assertRaises(
41+ errors.UnsupportedOperation,
42+ tree.set_merge_modified, d)
43 mm = tree.merge_modified()
44 self.assertEqual(mm, {})
45- supports_merge_modified = False
46- else:
47- mm = tree.merge_modified()
48- self.assertEqual(mm, d)
49- supports_merge_modified = True
50- if supports_merge_modified:
51+ if tree.supports_merge_modified():
52 mm = tree.merge_modified()
53 self.assertEqual(mm, d)
54 else:
55
56=== modified file 'breezy/transform.py'
57--- breezy/transform.py 2018-03-02 00:50:50 +0000
58+++ breezy/transform.py 2018-03-19 01:11:01 +0000
59@@ -2859,10 +2859,8 @@
60 trace.warning(unicode(conflict))
61 pp.next_phase()
62 tt.apply()
63- try:
64+ if working_tree.supports_merge_modified():
65 working_tree.set_merge_modified(merge_modified)
66- except errors.UnsupportedOperation:
67- pass # well, whatever.
68 finally:
69 target_tree.unlock()
70 tt.finalize()
71
72=== modified file 'breezy/workingtree.py'
73--- breezy/workingtree.py 2018-03-04 19:11:21 +0000
74+++ breezy/workingtree.py 2018-03-19 01:11:01 +0000
75@@ -151,6 +151,11 @@
76 """See `Tree.has_versioned_directories`."""
77 return self._format.supports_versioned_directories
78
79+ def supports_merge_modified(self):
80+ """Indicate whether this workingtree supports storing merge_modified.
81+ """
82+ return self._format.supports_merge_modified
83+
84 def _supports_executable(self):
85 if sys.platform == 'win32':
86 return False
87@@ -1411,6 +1416,9 @@
88
89 supports_versioned_directories = None
90
91+ supports_merge_modified = True
92+ """If this format supports storing merge modified hashes."""
93+
94 supports_setting_file_ids = True
95 """If this format allows setting the file id."""
96

Subscribers

People subscribed via source and target branches