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
=== modified file 'breezy/merge.py'
--- breezy/merge.py 2018-03-02 01:33:39 +0000
+++ breezy/merge.py 2018-03-19 01:11:01 +0000
@@ -1065,6 +1065,8 @@
1065 return result1065 return result
10661066
1067 def write_modified(self, results):1067 def write_modified(self, results):
1068 if not self.working_tree.supports_merge_modified():
1069 return
1068 modified_hashes = {}1070 modified_hashes = {}
1069 for path in results.modified_paths:1071 for path in results.modified_paths:
1070 wt_relpath = self.working_tree.relpath(path)1072 wt_relpath = self.working_tree.relpath(path)
@@ -1075,10 +1077,7 @@
1075 if hash is None:1077 if hash is None:
1076 continue1078 continue
1077 modified_hashes[file_id] = hash1079 modified_hashes[file_id] = hash
1078 try:1080 self.working_tree.set_merge_modified(modified_hashes)
1079 self.working_tree.set_merge_modified(modified_hashes)
1080 except errors.UnsupportedOperation:
1081 pass # Well, whatever.
10821081
1083 @staticmethod1082 @staticmethod
1084 def parent(entry, file_id):1083 def parent(entry, file_id):
10851084
=== modified file 'breezy/tests/per_workingtree/test_workingtree.py'
--- breezy/tests/per_workingtree/test_workingtree.py 2018-03-04 02:57:55 +0000
+++ breezy/tests/per_workingtree/test_workingtree.py 2018-03-19 01:11:01 +0000
@@ -711,17 +711,17 @@
711 with tree.lock_write():711 with tree.lock_write():
712 tree.add(['somefile'])712 tree.add(['somefile'])
713 d = {tree.path2id('somefile'): osutils.sha_string('hello')}713 d = {tree.path2id('somefile'): osutils.sha_string('hello')}
714 try:714 if tree.supports_merge_modified():
715 tree.set_merge_modified(d)715 tree.set_merge_modified(d)
716 except errors.UnsupportedOperation:716 mm = tree.merge_modified()
717 self.assertEqual(mm, d)
718 else:
719 self.assertRaises(
720 errors.UnsupportedOperation,
721 tree.set_merge_modified, d)
717 mm = tree.merge_modified()722 mm = tree.merge_modified()
718 self.assertEqual(mm, {})723 self.assertEqual(mm, {})
719 supports_merge_modified = False724 if tree.supports_merge_modified():
720 else:
721 mm = tree.merge_modified()
722 self.assertEqual(mm, d)
723 supports_merge_modified = True
724 if supports_merge_modified:
725 mm = tree.merge_modified()725 mm = tree.merge_modified()
726 self.assertEqual(mm, d)726 self.assertEqual(mm, d)
727 else:727 else:
728728
=== modified file 'breezy/transform.py'
--- breezy/transform.py 2018-03-02 00:50:50 +0000
+++ breezy/transform.py 2018-03-19 01:11:01 +0000
@@ -2859,10 +2859,8 @@
2859 trace.warning(unicode(conflict))2859 trace.warning(unicode(conflict))
2860 pp.next_phase()2860 pp.next_phase()
2861 tt.apply()2861 tt.apply()
2862 try:2862 if working_tree.supports_merge_modified():
2863 working_tree.set_merge_modified(merge_modified)2863 working_tree.set_merge_modified(merge_modified)
2864 except errors.UnsupportedOperation:
2865 pass # well, whatever.
2866 finally:2864 finally:
2867 target_tree.unlock()2865 target_tree.unlock()
2868 tt.finalize()2866 tt.finalize()
28692867
=== modified file 'breezy/workingtree.py'
--- breezy/workingtree.py 2018-03-04 19:11:21 +0000
+++ breezy/workingtree.py 2018-03-19 01:11:01 +0000
@@ -151,6 +151,11 @@
151 """See `Tree.has_versioned_directories`."""151 """See `Tree.has_versioned_directories`."""
152 return self._format.supports_versioned_directories152 return self._format.supports_versioned_directories
153153
154 def supports_merge_modified(self):
155 """Indicate whether this workingtree supports storing merge_modified.
156 """
157 return self._format.supports_merge_modified
158
154 def _supports_executable(self):159 def _supports_executable(self):
155 if sys.platform == 'win32':160 if sys.platform == 'win32':
156 return False161 return False
@@ -1411,6 +1416,9 @@
14111416
1412 supports_versioned_directories = None1417 supports_versioned_directories = None
14131418
1419 supports_merge_modified = True
1420 """If this format supports storing merge modified hashes."""
1421
1414 supports_setting_file_ids = True1422 supports_setting_file_ids = True
1415 """If this format allows setting the file id."""1423 """If this format allows setting the file id."""
14161424

Subscribers

People subscribed via source and target branches