Merge lp:~jelmer/brz/git-transform-fix into lp:brz/3.1

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/git-transform-fix
Merge into: lp:brz/3.1
Diff against target: 68 lines (+17/-4)
4 files modified
breezy/git/tests/test_transform.py (+14/-1)
breezy/git/transform.py (+1/-1)
breezy/transform.py (+1/-1)
breezy/workspace.py (+1/-1)
To merge this branch: bzr merge lp:~jelmer/brz/git-transform-fix
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+399959@code.launchpad.net

Commit message

Fix handling of revert in Git trees.

Description of the change

Fix handling of revert for Git trees.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/tests/test_transform.py'
2--- breezy/git/tests/test_transform.py 2020-09-02 16:35:18 +0000
3+++ breezy/git/tests/test_transform.py 2021-03-22 03:56:36 +0000
4@@ -20,7 +20,7 @@
5
6 import os
7
8-from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts
9+from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts, revert
10 from . import TestCaseWithTransport
11
12
13@@ -39,3 +39,16 @@
14 self.assertEqual([], list(conflicts))
15 tt.apply()
16 self.assertEqual(set(['name1', 'name2']), set(os.listdir('dir')))
17+
18+ def test_revert_does_not_remove(self):
19+ tree = self.make_branch_and_tree('.', format='git')
20+ tt = tree.transform()
21+ dir1 = tt.new_directory('dir', ROOT_PARENT)
22+ tid = tt.new_file('name1', dir1, [b'content1'])
23+ tt.version_file(tid)
24+ tt.apply()
25+ tree.commit('start')
26+ with open('dir/name1', 'wb') as f:
27+ f.write(b'new content2')
28+ revert(tree, tree.basis_tree())
29+ self.assertEqual([], list(tree.iter_changes(tree.basis_tree())))
30
31=== modified file 'breezy/git/transform.py'
32--- breezy/git/transform.py 2020-09-02 16:35:18 +0000
33+++ breezy/git/transform.py 2021-03-22 03:56:36 +0000
34@@ -1441,7 +1441,7 @@
35 changes = {}
36 changed_ids = set()
37 for id_set in [self._new_name, self._new_parent,
38- self._new_executability]:
39+ self._new_executability, self._new_contents]:
40 changed_ids.update(id_set)
41 for id_set in [self._new_name, self._new_parent]:
42 removed_id.update(id_set)
43
44=== modified file 'breezy/transform.py'
45--- breezy/transform.py 2020-09-02 17:00:38 +0000
46+++ breezy/transform.py 2021-03-22 03:56:36 +0000
47@@ -736,7 +736,7 @@
48 return conflicts, merge_modified
49
50
51-def revert(working_tree, target_tree, filenames, backups=False,
52+def revert(working_tree, target_tree, filenames=None, backups=False,
53 pb=None, change_reporter=None, merge_modified=None, basis_tree=None):
54 """Revert a working tree's contents to those of a target tree."""
55 with cleanup.ExitStack() as es:
56
57=== modified file 'breezy/workspace.py'
58--- breezy/workspace.py 2020-08-06 22:27:46 +0000
59+++ breezy/workspace.py 2021-03-22 03:56:36 +0000
60@@ -52,7 +52,7 @@
61 subpath: Subpath to operate on
62 """
63 revert(local_tree, local_tree.branch.basis_tree(),
64- [subpath] if subpath not in ('.', '') else None)
65+ [subpath] if subpath else None)
66 deletables = list(iter_deletables(
67 local_tree, unknown=True, ignored=False, detritus=False))
68 delete_items(deletables)

Subscribers

People subscribed via source and target branches