Merge lp:~jelmer/brz/git-no-file-id into lp:brz/3.3

Proposed by Jelmer Vernooij
Status: Needs review
Proposed branch: lp:~jelmer/brz/git-no-file-id
Merge into: lp:brz/3.3
Diff against target: 474 lines (+61/-103)
4 files modified
breezy/git/commit.py (+3/-4)
breezy/git/tree.py (+49/-88)
breezy/git/workingtree.py (+8/-11)
breezy/transport/http/__init__.py (+1/-0)
To merge this branch: bzr merge lp:~jelmer/brz/git-no-file-id
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Martin Packman Pending
Review via email: mp+432234@code.launchpad.net

This proposal supersedes a proposal from 2019-09-21.

Commit message

Drop file_id and parent_id from Git Tree objects.

Description of the change

Drop file_id and parent_id from Git Tree objects.

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

Looks good, thanks!

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
The Breezy Bot (the-breezy-bot) wrote : Posted in a previous version of this proposal
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
The Breezy Bot (the-breezy-bot) wrote : Posted in a previous version of this proposal
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
The Breezy Bot (the-breezy-bot) wrote : Posted in a previous version of this proposal
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 :
Download full text (70.8 KiB)

The attempt to merge lp:~jelmer/brz/git-no-file-id into lp:brz/3.3 failed. Command exited with 4.
Below is the output from the failed tests.

Collecting setuptools-gettext
  Using cached setuptools_gettext-0.1.1-py3-none-any.whl (10 kB)
Requirement already satisfied: setuptools>=46.1 in ./lib/python3.10/site-packages (from setuptools-gettext) (65.5.0)
Installing collected packages: setuptools-gettext
Successfully installed setuptools-gettext-0.1.1
Obtaining file:///tmp/tarmac/branch.mw89topd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Checking if build backend supports build_editable: started
  Checking if build backend supports build_editable: finished with status 'done'
  Getting requirements to build editable: started
  Getting requirements to build editable: finished with status 'done'
  Preparing editable metadata (pyproject.toml): started
  Preparing editable metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: configobj in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.0.6)
Requirement already satisfied: fastbencode in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.12)
Requirement already satisfied: dulwich>=0.20.23 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.46)
Requirement already satisfied: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.8)
Requirement already satisfied: patiencediff in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.2.3)
Requirement already satisfied: urllib3>=1.24.1 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.26.12)
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.4.1)
Collecting fastimport
  Using cached fastimport-0.9.14.tar.gz (41 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.18.0)
Collecting testtools
  Using cached testtools-2.5.0-py3-none-any.whl (181 kB)
Collecting python-subunit
  Using cached python_subunit-1.4.0-py2.py3-none-any.whl (106 kB)
Requirement already satisfied: setuptools in ./lib/python3.10/site-packages (from breezy==3.3.1.dev0) (65.5.0)
Collecting sphinx-epytext
  Using cached sphinx-epytext-0.0.4.tar.gz (3.6 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting sphinx
  Using cached sphinx-5.3.0-py3-none-any.whl (3.2 MB)
Requirement already satisfied: launchpadlib>=1.6.3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.10.17)
Requirement already satisfied: httplib2 in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (0.20.4)
Collecting keyring
  Using cached keyring-23.9.3-py3-none-any.whl (35 kB)
Requirement already satisfied: lazr.restfulclient>=0.9.19 in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (0.14.5)
Requirement already satisfied: lazr.uri in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (1.0.6)
Requirement alre...

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Download full text (70.8 KiB)

The attempt to merge lp:~jelmer/brz/git-no-file-id into lp:brz/3.3 failed. Command exited with 4.
Below is the output from the failed tests.

Collecting setuptools-gettext
  Using cached setuptools_gettext-0.1.1-py3-none-any.whl (10 kB)
Requirement already satisfied: setuptools>=46.1 in ./lib/python3.10/site-packages (from setuptools-gettext) (65.5.0)
Installing collected packages: setuptools-gettext
Successfully installed setuptools-gettext-0.1.1
Obtaining file:///tmp/tarmac/branch.sjs1fh0h
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Checking if build backend supports build_editable: started
  Checking if build backend supports build_editable: finished with status 'done'
  Getting requirements to build editable: started
  Getting requirements to build editable: finished with status 'done'
  Preparing editable metadata (pyproject.toml): started
  Preparing editable metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: patiencediff in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.2.3)
Requirement already satisfied: fastbencode in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.12)
Requirement already satisfied: dulwich>=0.20.23 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.46)
Requirement already satisfied: urllib3>=1.24.1 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.26.12)
Requirement already satisfied: configobj in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.0.6)
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.4.1)
Requirement already satisfied: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.8)
Collecting fastimport
  Using cached fastimport-0.9.14.tar.gz (41 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: launchpadlib>=1.6.3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.10.17)
Requirement already satisfied: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.18.0)
Collecting python-subunit
  Using cached python_subunit-1.4.0-py2.py3-none-any.whl (106 kB)
Collecting testtools
  Using cached testtools-2.5.0-py3-none-any.whl (181 kB)
Collecting sphinx-epytext
  Using cached sphinx-epytext-0.0.4.tar.gz (3.6 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: setuptools in ./lib/python3.10/site-packages (from breezy==3.3.1.dev0) (65.5.0)
Collecting sphinx
  Using cached sphinx-5.3.0-py3-none-any.whl (3.2 MB)
Requirement already satisfied: httplib2 in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (0.20.4)
Collecting keyring
  Using cached keyring-23.9.3-py3-none-any.whl (35 kB)
Requirement already satisfied: lazr.restfulclient>=0.9.19 in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (0.14.5)
Requirement already satisfied: lazr.uri in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.1.dev0) (1.0.6)
Requirement alre...

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Attempt to merge into lp:brz/3.3 failed due to conflicts:

contents conflict in byov.conf

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Attempt to merge into lp:brz/3.3 failed due to conflicts:

contents conflict in byov.conf

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Download full text (11.3 KiB)

The attempt to merge lp:~jelmer/brz/git-no-file-id into lp:brz/3.3 failed. Command exited with 1.
Below is the output from the failed tests.

Collecting setuptools-gettext
  Downloading setuptools_gettext-0.1.1-py3-none-any.whl (10 kB)
Requirement already satisfied: setuptools>=46.1 in ./lib/python3.10/site-packages (from setuptools-gettext) (65.5.0)
Installing collected packages: setuptools-gettext
Successfully installed setuptools-gettext-0.1.1
Obtaining file:///tmp/tarmac/branch.xxlbrgzh
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Checking if build backend supports build_editable: started
  Checking if build backend supports build_editable: finished with status 'done'
  Getting requirements to build editable: started
  Getting requirements to build editable: finished with status 'done'
  Preparing editable metadata (pyproject.toml): started
  Preparing editable metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: configobj in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.0.6)
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.4.1)
Requirement already satisfied: dulwich>=0.20.46 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.46)
Requirement already satisfied: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.8)
Requirement already satisfied: patiencediff in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.2.3)
Requirement already satisfied: urllib3>=1.24.1 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.26.12)
Requirement already satisfied: fastbencode in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.12)
Requirement already satisfied: launchpadlib>=1.6.3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.10.17)
Collecting fastimport
  Downloading fastimport-0.9.14.tar.gz (41 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.8/41.8 kB 44.5 kB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.18.0)
Requirement already satisfied: paramiko in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (2.10.4)
Collecting sphinx-epytext
  Downloading sphinx-epytext-0.0.4.tar.gz (3.6 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: setuptools in ./lib/python3.10/site-packages (from breezy==3.3.1.dev0) (65.5.0)
Collecting sphinx
  Downloading sphinx-5.3.0-py3-none-any.whl (3.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 8.2 MB/s eta 0:00:00
Collecting testtools
  Downloading testtools-2.5.0-py3-none-any.whl (181 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 182.0/182.0 kB 1.7 MB/s eta 0:00:00
Collecting python-subunit
  Downloading python_subunit-1.4.0-py2.py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.1/106.1 kB 779.8 kB/s eta 0:00:00
Requirement already satisfied: httplib2 in /usr/lib/python3/dist-packages...

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Download full text (12.1 KiB)

The attempt to merge lp:~jelmer/brz/git-no-file-id into lp:brz/3.3 failed. Command exited with 1.
Below is the output from the failed tests.

Collecting setuptools-gettext
  Using cached setuptools_gettext-0.1.1-py3-none-any.whl (10 kB)
Requirement already satisfied: setuptools>=46.1 in ./lib/python3.10/site-packages (from setuptools-gettext) (65.5.0)
Installing collected packages: setuptools-gettext
Successfully installed setuptools-gettext-0.1.1
Obtaining file:///tmp/tarmac/branch._m07v4m7
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Checking if build backend supports build_editable: started
  Checking if build backend supports build_editable: finished with status 'done'
  Getting requirements to build editable: started
  Getting requirements to build editable: finished with status 'done'
  Preparing editable metadata (pyproject.toml): started
  Preparing editable metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (0.0.8)
Requirement already satisfied: fastbencode in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (0.0.12)
Requirement already satisfied: dulwich>=0.20.46 in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (0.20.50)
Requirement already satisfied: patiencediff in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (0.2.3)
Requirement already satisfied: urllib3>=1.24.1 in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (1.26.12)
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (6.0)
Requirement already satisfied: configobj in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (5.0.6)
Requirement already satisfied: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (1.18.0)
Requirement already satisfied: paramiko in /usr/local/lib/python3.10/dist-packages (from breezy==3.3.2.dev0) (2.12.0)
Collecting sphinx-epytext
  Using cached sphinx_epytext-0.0.4-py3-none-any.whl
Collecting sphinx
  Using cached sphinx-5.3.0-py3-none-any.whl (3.2 MB)
Collecting docutils
  Using cached docutils-0.19-py3-none-any.whl (570 kB)
Requirement already satisfied: setuptools in ./lib/python3.10/site-packages (from breezy==3.3.2.dev0) (65.5.0)
Collecting python-subunit
  Using cached python_subunit-1.4.2-py3-none-any.whl (106 kB)
Collecting testtools
  Using cached testtools-2.5.0-py3-none-any.whl (181 kB)
Collecting testscenarios
  Using cached testscenarios-0.5.0-py2.py3-none-any.whl (21 kB)
Requirement already satisfied: flake8 in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (5.0.4)
Collecting fastimport
  Using cached fastimport-0.9.14-py2.py3-none-any.whl
Requirement already satisfied: launchpadlib>=1.6.3 in /usr/lib/python3/dist-packages (from breezy==3.3.2.dev0) (1.10.17)
Requirement already satisfied: httplib2 in /usr/lib/python3/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.2.dev0) (0.20.4)
Requirement already satisfied: keyring in /usr/local/lib/python3.10/dist-packages (from launchpadlib>=1.6.3->breezy==3.3.2.dev0) (23.11.0)
Requirement already satisfied: lazr.restful...

Unmerged revisions

7398. By Jelmer Vernooij

Merge lp:brz/3.3

7397. By Jelmer Vernooij

Merge lp:brz/3.3

7396. By Jelmer Vernooij

Merge lp:brz/3.3

7395. By Jelmer Vernooij

merge trunk

7394. By Jelmer Vernooij

Merge trunk

7393. By Jelmer Vernooij

Merge lp:brz.

7392. By Jelmer Vernooij

merge trunk.

7391. By Jelmer Vernooij

drop file_id and parent_id from Git Tree objects.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/commit.py'
2--- breezy/git/commit.py 2022-09-30 23:41:52 +0000
3+++ breezy/git/commit.py 2022-10-27 19:26:50 +0000
4@@ -92,8 +92,7 @@
5 if change.kind[1] in ("directory",):
6 self._inv_delta.append(
7 (change.path[0], change.path[1], file_id,
8- entry_factory[change.kind[1]](
9- file_id, change.name[1], parent_id_new)))
10+ entry_factory[change.kind[1]](change.name[1])))
11 if change.kind[0] in ("file", "symlink"):
12 self._blobs[encode_git_path(change.path[0])] = None
13 self._any_changes = True
14@@ -109,7 +108,7 @@
15 entry_kls = entry_factory[change.kind[1]]
16 except KeyError:
17 raise KeyError("unknown kind %s" % change.kind[1])
18- entry = entry_kls(file_id, change.name[1], parent_id_new)
19+ entry = entry_kls(change.name[1])
20 if change.kind[1] == "file":
21 entry.executable = change.executable[1]
22 blob = Blob()
23@@ -172,7 +171,7 @@
24
25 def finish_inventory(self):
26 # eliminate blobs that were removed
27- self._blobs = {k: v for (k, v) in self._blobs.items()}
28+ self._blobs = {k: v for (k, v) in self._blobs.items() if v is not None}
29
30 def _iterblobs(self):
31 return ((path, sha, mode) for (path, (mode, sha))
32
33=== modified file 'breezy/git/tree.py'
34--- breezy/git/tree.py 2022-10-02 16:57:16 +0000
35+++ breezy/git/tree.py 2022-10-27 19:26:50 +0000
36@@ -79,12 +79,12 @@
37
38 class GitTreeDirectory(_mod_tree.TreeDirectory):
39
40- __slots__ = ['file_id', 'name', 'parent_id']
41+ __slots__ = ['name', 'children']
42
43- def __init__(self, file_id, name, parent_id):
44- self.file_id = file_id
45+ def __init__(self, name):
46 self.name = name
47- self.parent_id = parent_id
48+ # TODO(jelmer)
49+ self.children = {}
50
51 @property
52 def kind(self):
53@@ -95,31 +95,24 @@
54 return False
55
56 def copy(self):
57- return self.__class__(
58- self.file_id, self.name, self.parent_id)
59+ return self.__class__(self.name)
60
61 def __repr__(self):
62- return "%s(file_id=%r, name=%r, parent_id=%r)" % (
63- self.__class__.__name__, self.file_id, self.name,
64- self.parent_id)
65+ return "%s(name=%r)" % (self.__class__.__name__, self.name)
66
67 def __eq__(self, other):
68 return (self.kind == other.kind and
69- self.file_id == other.file_id and
70- self.name == other.name and
71- self.parent_id == other.parent_id)
72+ self.name == other.name)
73
74
75 class GitTreeFile(_mod_tree.TreeFile):
76
77- __slots__ = ['file_id', 'name', 'parent_id', 'text_size',
78+ __slots__ = ['name', 'text_size',
79 'executable', 'git_sha1']
80
81- def __init__(self, file_id, name, parent_id, text_size=None,
82+ def __init__(self, name, text_size=None,
83 git_sha1=None, executable=None):
84- self.file_id = file_id
85 self.name = name
86- self.parent_id = parent_id
87 self.text_size = text_size
88 self.git_sha1 = git_sha1
89 self.executable = executable
90@@ -130,22 +123,19 @@
91
92 def __eq__(self, other):
93 return (self.kind == other.kind and
94- self.file_id == other.file_id and
95 self.name == other.name and
96- self.parent_id == other.parent_id and
97 self.git_sha1 == other.git_sha1 and
98 self.text_size == other.text_size and
99 self.executable == other.executable)
100
101 def __repr__(self):
102- return ("%s(file_id=%r, name=%r, parent_id=%r, text_size=%r, "
103+ return ("%s(name=%r, text_size=%r, "
104 "git_sha1=%r, executable=%r)") % (
105- type(self).__name__, self.file_id, self.name, self.parent_id,
106+ type(self).__name__, self.name,
107 self.text_size, self.git_sha1, self.executable)
108
109 def copy(self):
110- ret = self.__class__(
111- self.file_id, self.name, self.parent_id)
112+ ret = self.__class__(self.name)
113 ret.git_sha1 = self.git_sha1
114 ret.text_size = self.text_size
115 ret.executable = self.executable
116@@ -154,13 +144,10 @@
117
118 class GitTreeSymlink(_mod_tree.TreeLink):
119
120- __slots__ = ['file_id', 'name', 'parent_id', 'symlink_target']
121+ __slots__ = ['name', 'symlink_target']
122
123- def __init__(self, file_id, name, parent_id,
124- symlink_target=None):
125- self.file_id = file_id
126+ def __init__(self, name, symlink_target=None):
127 self.name = name
128- self.parent_id = parent_id
129 self.symlink_target = symlink_target
130
131 @property
132@@ -176,31 +163,25 @@
133 return None
134
135 def __repr__(self):
136- return "%s(file_id=%r, name=%r, parent_id=%r, symlink_target=%r)" % (
137- type(self).__name__, self.file_id, self.name, self.parent_id,
138- self.symlink_target)
139+ return "%s(name=%r, symlink_target=%r)" % (
140+ type(self).__name__, self.name, self.symlink_target)
141
142 def __eq__(self, other):
143 return (self.kind == other.kind and
144- self.file_id == other.file_id and
145 self.name == other.name and
146- self.parent_id == other.parent_id and
147 self.symlink_target == other.symlink_target)
148
149 def copy(self):
150 return self.__class__(
151- self.file_id, self.name, self.parent_id,
152- self.symlink_target)
153+ self.name, self.symlink_target)
154
155
156 class GitTreeSubmodule(_mod_tree.TreeReference):
157
158- __slots__ = ['file_id', 'name', 'parent_id', 'reference_revision']
159+ __slots__ = ['name', 'reference_revision']
160
161- def __init__(self, file_id, name, parent_id, reference_revision=None):
162- self.file_id = file_id
163+ def __init__(self, name, reference_revision=None):
164 self.name = name
165- self.parent_id = parent_id
166 self.reference_revision = reference_revision
167
168 @property
169@@ -212,22 +193,16 @@
170 return 'tree-reference'
171
172 def __repr__(self):
173- return ("%s(file_id=%r, name=%r, parent_id=%r, "
174- "reference_revision=%r)") % (
175- type(self).__name__, self.file_id, self.name, self.parent_id,
176- self.reference_revision)
177+ return ("%s(name=%r, reference_revision=%r)") % (
178+ type(self).__name__, self.name, self.reference_revision)
179
180 def __eq__(self, other):
181 return (self.kind == other.kind and
182- self.file_id == other.file_id and
183 self.name == other.name and
184- self.parent_id == other.parent_id and
185 self.reference_revision == other.reference_revision)
186
187 def copy(self):
188- return self.__class__(
189- self.file_id, self.name, self.parent_id,
190- self.reference_revision)
191+ return self.__class__(self.name, self.reference_revision)
192
193
194 entry_factory = {
195@@ -483,12 +458,11 @@
196 from_dir = u""
197 (store, mode, hexsha) = self._lookup_path(from_dir)
198 if mode is None: # Root
199- root_ie = self._get_dir_ie(b"", None)
200+ root_ie = self._get_dir_ie(b"")
201 else:
202 parent_path = posixpath.dirname(from_dir)
203- parent_id = self.mapping.generate_file_id(parent_path)
204 if mode_kind(mode) == 'directory':
205- root_ie = self._get_dir_ie(encode_git_path(from_dir), parent_id)
206+ root_ie = self._get_dir_ie(encode_git_path(from_dir))
207 else:
208 root_ie = self._get_file_ie(
209 store, encode_git_path(from_dir),
210@@ -498,9 +472,9 @@
211 todo = []
212 if root_ie.kind == 'directory':
213 todo.append((store, encode_git_path(from_dir),
214- b"", hexsha, root_ie.file_id))
215+ b"", hexsha))
216 while todo:
217- (store, path, relpath, hexsha, parent_id) = todo.pop()
218+ (store, path, relpath, hexsha) = todo.pop()
219 tree = store[hexsha]
220 for name, mode, hexsha in tree.iteritems():
221 if self.mapping.is_special_file(name):
222@@ -512,17 +486,17 @@
223 store = self._get_submodule_store(child_relpath)
224 hexsha = store[hexsha].tree
225 if stat.S_ISDIR(mode):
226- ie = self._get_dir_ie(child_path, parent_id)
227+ ie = self._get_dir_ie(child_path)
228 if recursive:
229 todo.append(
230 (store, child_path, child_relpath, hexsha,
231 ie.file_id))
232 else:
233 ie = self._get_file_ie(
234- store, child_path, name, mode, hexsha, parent_id)
235+ store, child_path, name, mode, hexsha)
236 yield (decode_git_path(child_relpath), "V", ie.kind, ie)
237
238- def _get_file_ie(self, store, path, name, mode, hexsha, parent_id):
239+ def _get_file_ie(self, store, path, name, mode, hexsha):
240 if not isinstance(path, bytes):
241 raise TypeError(path)
242 if not isinstance(name, bytes):
243@@ -530,8 +504,7 @@
244 kind = mode_kind(mode)
245 path = decode_git_path(path)
246 name = decode_git_path(name)
247- file_id = self.mapping.generate_file_id(path)
248- ie = entry_factory[kind](file_id, name, parent_id)
249+ ie = entry_factory[kind](name)
250 if kind == 'symlink':
251 ie.symlink_target = decode_git_path(store[hexsha].data)
252 elif kind == 'tree-reference':
253@@ -543,10 +516,9 @@
254 ie.executable = mode_is_executable(mode)
255 return ie
256
257- def _get_dir_ie(self, path, parent_id):
258+ def _get_dir_ie(self, path):
259 path = decode_git_path(path)
260- file_id = self.mapping.generate_file_id(path)
261- return GitTreeDirectory(file_id, posixpath.basename(path), parent_id)
262+ return GitTreeDirectory(posixpath.basename(path))
263
264 def iter_child_entries(self, path):
265 (store, mode, tree_sha) = self._lookup_path(path)
266@@ -555,17 +527,15 @@
267 return
268
269 encoded_path = encode_git_path(path)
270- file_id = self.path2id(path)
271 tree = store[tree_sha]
272 for name, mode, hexsha in tree.iteritems():
273 if self.mapping.is_special_file(name):
274 continue
275 child_path = posixpath.join(encoded_path, name)
276 if stat.S_ISDIR(mode):
277- yield self._get_dir_ie(child_path, file_id)
278+ yield self._get_dir_ie(child_path)
279 else:
280- yield self._get_file_ie(store, child_path, name, mode, hexsha,
281- file_id)
282+ yield self._get_file_ie(store, child_path, name, mode, hexsha)
283
284 def iter_entries_by_dir(self, specific_files=None,
285 recurse_nested=False):
286@@ -577,11 +547,11 @@
287 else:
288 specific_files = set([encode_git_path(p)
289 for p in specific_files])
290- todo = deque([(self.store, b"", self.tree, self.path2id(''))])
291+ todo = deque([(self.store, b"", self.tree)])
292 if specific_files is None or u"" in specific_files:
293- yield u"", self._get_dir_ie(b"", None)
294+ yield u"", self._get_dir_ie(b"")
295 while todo:
296- store, path, tree_sha, parent_id = todo.popleft()
297+ store, path, tree_sha = todo.popleft()
298 tree = store[tree_sha]
299 extradirs = []
300 for name, mode, hexsha in tree.iteritems():
301@@ -599,17 +569,15 @@
302 if (specific_files is None or
303 any([p for p in specific_files if p.startswith(
304 child_path)])):
305- extradirs.append(
306- (substore, child_path, hexsha,
307- self.path2id(child_path_decoded)))
308+ extradirs.append((substore, child_path, hexsha))
309 if specific_files is None or child_path in specific_files:
310 if stat.S_ISDIR(mode):
311 yield (child_path_decoded,
312- self._get_dir_ie(child_path, parent_id))
313+ self._get_dir_ie(child_path))
314 else:
315 yield (child_path_decoded,
316 self._get_file_ie(substore, child_path, name, mode,
317- hexsha, parent_id))
318+ hexsha))
319 todo.extendleft(reversed(extradirs))
320
321 def iter_references(self):
322@@ -1378,11 +1346,11 @@
323 specific_files = set(specific_files)
324 else:
325 specific_files = None
326- root_ie = self._get_dir_ie(u"", None)
327+ root_ie = self._get_dir_ie(u"")
328 ret = {}
329 if specific_files is None or u"" in specific_files:
330 ret[(u"", u"")] = root_ie
331- dir_ids = {u"": root_ie.file_id}
332+ dir_ids = set([u""])
333 for path, value in self._recurse_index_entries(
334 recurse_nested=recurse_nested):
335 if self.mapping.is_special_file(path):
336@@ -1392,14 +1360,13 @@
337 continue
338 (parent, name) = posixpath.split(path)
339 try:
340- file_ie = self._get_file_ie(name, path, value, None)
341+ file_ie = self._get_file_ie(name, path, value)
342 except _mod_transport.NoSuchFile:
343 continue
344 if specific_files is None:
345 for (dir_path, dir_ie) in self._add_missing_parent_ids(
346 parent, dir_ids):
347 ret[(posixpath.dirname(dir_path), dir_path)] = dir_ie
348- file_ie.parent_id = self.path2id(parent)
349 ret[(posixpath.dirname(path), path)] = file_ie
350 # Special casing for directories
351 if specific_files:
352@@ -1416,23 +1383,18 @@
353 if entry.kind == 'tree-reference':
354 yield path
355
356- def _get_dir_ie(self, path, parent_id):
357- file_id = self.path2id(path)
358- return GitTreeDirectory(file_id,
359- posixpath.basename(path).strip("/"), parent_id)
360+ def _get_dir_ie(self, path):
361+ return GitTreeDirectory(posixpath.basename(path).strip("/"))
362
363- def _get_file_ie(self, name, path, value, parent_id):
364+ def _get_file_ie(self, name, path, value):
365 if not isinstance(name, str):
366 raise TypeError(name)
367 if not isinstance(path, str):
368 raise TypeError(path)
369 if not isinstance(value, tuple) and not isinstance(value, IndexEntry):
370 raise TypeError(value)
371- file_id = self.path2id(path)
372- if not isinstance(file_id, bytes):
373- raise TypeError(file_id)
374 kind = mode_kind(value.mode)
375- ie = entry_factory[kind](file_id, name, parent_id)
376+ ie = entry_factory[kind](name)
377 if kind == 'symlink':
378 ie.symlink_target = self.get_symlink_target(path)
379 elif kind == 'tree-reference':
380@@ -1448,9 +1410,8 @@
381 return []
382 parent = posixpath.dirname(path).strip("/")
383 ret = self._add_missing_parent_ids(parent, dir_ids)
384- parent_id = dir_ids[parent]
385- ie = self._get_dir_ie(path, parent_id)
386- dir_ids[path] = ie.file_id
387+ ie = self._get_dir_ie(path)
388+ dir_ids.add(path)
389 ret.append((path, ie))
390 return ret
391
392
393=== modified file 'breezy/git/workingtree.py'
394--- breezy/git/workingtree.py 2022-08-22 18:19:46 +0000
395+++ breezy/git/workingtree.py 2022-10-27 19:26:50 +0000
396@@ -538,8 +538,7 @@
397 return
398 if action is not None:
399 parent_path = posixpath.dirname(filepath)
400- parent_id = self.path2id(parent_path)
401- parent_ie = self._get_dir_ie(parent_path, parent_id)
402+ parent_ie = self._get_dir_ie(parent_path)
403 file_id = action(self, parent_ie, filepath, kind)
404 if file_id is not None:
405 raise workingtree.SettingFileIdUnsupported()
406@@ -835,16 +834,16 @@
407 recurse_nested=False):
408 if from_dir is None or from_dir == '.':
409 from_dir = u""
410- dir_ids = {}
411+ dir_ids = set()
412 fk_entries = {'directory': tree.TreeDirectory,
413 'file': tree.TreeFile,
414 'symlink': tree.TreeLink,
415 'tree-reference': tree.TreeReference}
416 with self.lock_read():
417- root_ie = self._get_dir_ie(u"", None)
418+ root_ie = self._get_dir_ie(u"")
419 if include_root and not from_dir:
420 yield "", "V", root_ie.kind, root_ie
421- dir_ids[u""] = root_ie.file_id
422+ dir_ids.add(u"")
423 if recursive:
424 path_iterator = sorted(
425 self._iter_files_recursive(
426@@ -879,7 +878,7 @@
427 if kind == 'directory':
428 if path != from_dir:
429 if self._has_dir(encoded_path):
430- ie = self._get_dir_ie(path, self.path2id(path))
431+ ie = self._get_dir_ie(path)
432 status = "V"
433 elif self.is_ignored(path):
434 status = "I"
435@@ -891,7 +890,7 @@
436 ie)
437 continue
438 if value is not None:
439- ie = self._get_file_ie(name, path, value, dir_ids[parent])
440+ ie = self._get_file_ie(name, path, value)
441 yield (posixpath.relpath(path, from_dir), "V", ie.kind, ie)
442 else:
443 try:
444@@ -920,7 +919,6 @@
445 def iter_child_entries(self, path):
446 encoded_path = encode_git_path(path)
447 with self.lock_read():
448- parent_id = self.path2id(path)
449 found_any = False
450 for item_path, value in self.index.iteritems():
451 decoded_item_path = decode_git_path(item_path)
452@@ -933,11 +931,10 @@
453 if '/' in subpath:
454 dirname = subpath.split('/', 1)[0]
455 file_ie = self._get_dir_ie(
456- posixpath.join(path, dirname), parent_id)
457+ posixpath.join(path, dirname))
458 else:
459 (unused_parent, name) = posixpath.split(decoded_item_path)
460- file_ie = self._get_file_ie(
461- name, decoded_item_path, value, parent_id)
462+ file_ie = self._get_file_ie(name, decoded_item_path, value)
463 yield file_ie
464 if not found_any and path != u'':
465 raise _mod_transport.NoSuchFile(path)
466
467=== modified file 'breezy/transport/http/__init__.py'
468--- breezy/transport/http/__init__.py 2021-01-10 00:25:52 +0000
469+++ breezy/transport/http/__init__.py 2022-10-27 19:26:50 +0000
470@@ -116,3 +116,4 @@
471 * none: Certificates ignored
472 * required: Certificates required and validated
473 """)
474+

Subscribers

People subscribed via source and target branches