Merge lp:~jelmer/brz/git-transform-pure-rename into lp:brz/3.2

Proposed by Jelmer Vernooij
Status: Needs review
Proposed branch: lp:~jelmer/brz/git-transform-pure-rename
Merge into: lp:brz/3.2
Diff against target: 51 lines (+17/-2)
2 files modified
breezy/git/tests/test_transform.py (+7/-1)
breezy/git/transform.py (+10/-1)
To merge this branch: bzr merge lp:~jelmer/brz/git-transform-pure-rename
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+426473@code.launchpad.net

This proposal supersedes a proposal from 2021-03-27.

Commit message

git transform: Don't map to tree paths unless they exist.

Description of the change

git transform: Don't map to tree paths unless they exist.

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

Unmerged revisions

7682. By Jelmer Vernooij

Don't map to tree paths unless they exist.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'breezy/git/tests/test_transform.py'
--- breezy/git/tests/test_transform.py 2021-03-22 03:46:11 +0000
+++ breezy/git/tests/test_transform.py 2022-07-07 11:52:38 +0000
@@ -20,7 +20,7 @@
2020
21import os21import os
2222
23from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts, revert23from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts, revert, NoFinalPath
24from . import TestCaseWithTransport24from . import TestCaseWithTransport
2525
2626
@@ -52,3 +52,9 @@
52 f.write(b'new content2')52 f.write(b'new content2')
53 revert(tree, tree.basis_tree())53 revert(tree, tree.basis_tree())
54 self.assertEqual([], list(tree.iter_changes(tree.basis_tree())))54 self.assertEqual([], list(tree.iter_changes(tree.basis_tree())))
55
56 def test_nonexisting_file_ids(self):
57 tree = self.make_branch_and_tree('.', format='git')
58 tt = tree.transform()
59 tid = tt.trans_id_file_id(b'git:some-path')
60 self.assertRaises(NoFinalPath, tt.final_name, tid)
5561
=== modified file 'breezy/git/transform.py'
--- breezy/git/transform.py 2021-12-09 20:50:25 +0000
+++ breezy/git/transform.py 2022-07-07 11:52:38 +0000
@@ -82,6 +82,7 @@
82 # Whether the target is case sensitive82 # Whether the target is case sensitive
83 self._case_sensitive_target = case_sensitive83 self._case_sensitive_target = case_sensitive
84 self._symlink_target = {}84 self._symlink_target = {}
85 self._non_present_file_ids = {}
8586
86 @property87 @property
87 def mapping(self):88 def mapping(self):
@@ -167,7 +168,15 @@
167 if file_id is None:168 if file_id is None:
168 raise ValueError('None is not a valid file id')169 raise ValueError('None is not a valid file id')
169 path = self.mapping.parse_file_id(file_id)170 path = self.mapping.parse_file_id(file_id)
170 return self.trans_id_tree_path(path)171 if self._tree.is_versioned(path):
172 return self.trans_id_tree_path(path)
173 else:
174 if file_id in self._non_present_file_ids:
175 return self._non_present_file_ids[file_id]
176 else:
177 trans_id = self.assign_id()
178 self._non_present_file_ids[file_id] = trans_id
179 return trans_id
171180
172 def version_file(self, trans_id, file_id=None):181 def version_file(self, trans_id, file_id=None):
173 """Schedule a file to become versioned."""182 """Schedule a file to become versioned."""

Subscribers

People subscribed via source and target branches