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
1=== modified file 'breezy/git/tests/test_transform.py'
2--- breezy/git/tests/test_transform.py 2021-03-22 03:46:11 +0000
3+++ breezy/git/tests/test_transform.py 2022-07-07 11:52:38 +0000
4@@ -20,7 +20,7 @@
5
6 import os
7
8-from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts, revert
9+from ...transform import ROOT_PARENT, conflict_pass, resolve_conflicts, revert, NoFinalPath
10 from . import TestCaseWithTransport
11
12
13@@ -52,3 +52,9 @@
14 f.write(b'new content2')
15 revert(tree, tree.basis_tree())
16 self.assertEqual([], list(tree.iter_changes(tree.basis_tree())))
17+
18+ def test_nonexisting_file_ids(self):
19+ tree = self.make_branch_and_tree('.', format='git')
20+ tt = tree.transform()
21+ tid = tt.trans_id_file_id(b'git:some-path')
22+ self.assertRaises(NoFinalPath, tt.final_name, tid)
23
24=== modified file 'breezy/git/transform.py'
25--- breezy/git/transform.py 2021-12-09 20:50:25 +0000
26+++ breezy/git/transform.py 2022-07-07 11:52:38 +0000
27@@ -82,6 +82,7 @@
28 # Whether the target is case sensitive
29 self._case_sensitive_target = case_sensitive
30 self._symlink_target = {}
31+ self._non_present_file_ids = {}
32
33 @property
34 def mapping(self):
35@@ -167,7 +168,15 @@
36 if file_id is None:
37 raise ValueError('None is not a valid file id')
38 path = self.mapping.parse_file_id(file_id)
39- return self.trans_id_tree_path(path)
40+ if self._tree.is_versioned(path):
41+ return self.trans_id_tree_path(path)
42+ else:
43+ if file_id in self._non_present_file_ids:
44+ return self._non_present_file_ids[file_id]
45+ else:
46+ trans_id = self.assign_id()
47+ self._non_present_file_ids[file_id] = trans_id
48+ return trans_id
49
50 def version_file(self, trans_id, file_id=None):
51 """Schedule a file to become versioned."""

Subscribers

People subscribed via source and target branches