Merge lp:~jelmer/brz/git-nested-tree-iterate into lp:brz/3.3

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: 7590
Merged at revision: 7689
Proposed branch: lp:~jelmer/brz/git-nested-tree-iterate
Merge into: lp:brz/3.3
Diff against target: 70 lines (+24/-4)
1 file modified
breezy/git/tree.py (+24/-4)
To merge this branch: bzr merge lp:~jelmer/brz/git-nested-tree-iterate
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+432232@code.launchpad.net

This proposal supersedes a proposal from 2022-02-19.

Commit message

Raise specific exception when having to access remote git revision trees.

Description of the change

Raise specific exception when having to access remote git revision trees.

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
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 :

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

text conflict in breezy/git/tree.py

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

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

text conflict in breezy/git/tree.py

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

The attempt to merge lp:~jelmer/brz/git-nested-tree-iterate 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.7v5qoair
  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: patiencediff in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.2.3)
Requirement already satisfied: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.8)
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)
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: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.18.0)
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'
Collecting sphinx
  Using cached sphinx-5.3.0-py3-none-any.whl (3.2 MB)
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'
Requirement already satisfied: launchpadlib>=1.6.3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.10.17)
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: 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)
Require...

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

The attempt to merge lp:~jelmer/brz/git-nested-tree-iterate 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.gx_5nnji
  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: merge3 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.8)
Requirement already satisfied: fastbencode in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.0.12)
Requirement already satisfied: configobj in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (5.0.6)
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: dulwich>=0.20.46 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.46)
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: 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)
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: 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 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: 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)
Require...

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

There are additional revisions which have not been approved in review. Please seek review and approval of these new revisions.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/tree.py'
2--- breezy/git/tree.py 2022-10-02 16:57:16 +0000
3+++ breezy/git/tree.py 2022-10-27 19:26:45 +0000
4@@ -60,12 +60,15 @@
5 trace,
6 transport as _mod_transport,
7 tree as _mod_tree,
8+ urlutils,
9 workingtree,
10 )
11 from ..revision import (
12 CURRENT_REVISION,
13 NULL_REVISION,
14 )
15+from ..transport import get_transport
16+from ..tree import MissingNestedTree
17
18 from .mapping import (
19 encode_git_path,
20@@ -329,6 +332,11 @@
21 return Branch.open(url.decode('utf-8'))
22
23
24+class RemoteNestedTree(MissingNestedTree):
25+
26+ _fmt = "Unable to access remote nested tree at %(path)s"
27+
28+
29 class GitRevisionTree(revisiontree.RevisionTree, GitTree):
30 """Revision tree implementation based on Git objects."""
31
32@@ -358,22 +366,34 @@
33 if not isinstance(relpath, bytes):
34 raise TypeError(relpath)
35 try:
36- info = self._submodule_info()[relpath]
37+ url, section = self._submodule_info()[relpath]
38 except KeyError:
39+ nested_repo_transport = None
40+ else:
41+ nested_repo_transport = self._repository.controldir.control_transport.clone(
42+ posixpath.join('modules', decode_git_path(section)))
43+ if not nested_repo_transport.has('.'):
44+ nested_url = urlutils.join(
45+ self._repository.controldir.user_url, decode_git_path(url))
46+ nested_repo_transport = get_transport(nested_url)
47+ if nested_repo_transport is None:
48 nested_repo_transport = self._repository.controldir.user_transport.clone(
49 decode_git_path(relpath))
50 else:
51 nested_repo_transport = self._repository.controldir.control_transport.clone(
52- posixpath.join('modules', decode_git_path(info[1])))
53+ posixpath.join('modules', decode_git_path(section)))
54 if not nested_repo_transport.has('.'):
55 nested_repo_transport = self._repository.controldir.user_transport.clone(
56- posixpath.join(decode_git_path(info[1]), '.git'))
57+ posixpath.join(decode_git_path(section), '.git'))
58 nested_controldir = _mod_controldir.ControlDir.open_from_transport(
59 nested_repo_transport)
60 return nested_controldir.find_repository()
61
62 def _get_submodule_store(self, relpath):
63- return self._get_submodule_repository(relpath)._git.object_store
64+ repo = self._get_submodule_repository(relpath)
65+ if not hasattr(repo, '_git'):
66+ raise RemoteNestedTree(relpath)
67+ return repo._git.object_store
68
69 def get_nested_tree(self, path):
70 encoded_path = encode_git_path(path)

Subscribers

People subscribed via source and target branches