Merge lp:~jelmer/brz/git-unexpected-http-response into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: 7728
Merged at revision: 7670
Proposed branch: lp:~jelmer/brz/git-unexpected-http-response
Merge into: lp:brz
Diff against target: 69 lines (+23/-0)
3 files modified
breezy/git/remote.py (+5/-0)
breezy/git/tests/test_remote.py (+13/-0)
breezy/repository.py (+5/-0)
To merge this branch: bzr merge lp:~jelmer/brz/git-unexpected-http-response
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+433058@code.launchpad.net

Commit message

Handle http unexpected errors from git

Description of the change

Handle http unexpected errors from git

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 :
Download full text (13.6 KiB)

The attempt to merge lp:~jelmer/brz/git-unexpected-http-response into lp:brz failed. Command exited with 142.
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.g1er185z
  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: dulwich>=0.20.46 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.50)
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: 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: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (6.0)
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: gpg in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (1.18.0)
Collecting testtools
  Downloading testtools-2.5.0-py3-none-any.whl (181 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 182.0/182.0 kB 1.8 MB/s eta 0:00:00
Collecting python-subunit
  Downloading python_subunit-1.4.1-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.7/106.7 kB 1.8 MB/s eta 0:00:00
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 1.0 MB/s eta 0:00:00
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 1.1 MB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: httplib2 in /usr/lib/python3/dist-pac...

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

The attempt to merge lp:~jelmer/brz/git-unexpected-http-response into lp:brz failed. Command exited with 142.
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.8i2hf_c2
  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: pyyaml in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (6.0)
Requirement already satisfied: dulwich>=0.20.46 in /usr/lib/python3/dist-packages (from breezy==3.3.1.dev0) (0.20.50)
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: 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)
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)
Collecting testtools
  Using cached testtools-2.5.0-py3-none-any.whl (181 kB)
Collecting python-subunit
  Using cached python_subunit-1.4.1-py3-none-any.whl (106 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: 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)
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.11.0-py3-none-any.whl (36 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...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/remote.py'
2--- breezy/git/remote.py 2022-10-28 18:05:19 +0000
3+++ breezy/git/remote.py 2022-11-15 16:32:03 +0000
4@@ -48,6 +48,7 @@
5 NotLocalUrl,
6 PermissionDenied,
7 TransportError,
8+ UnexpectedHttpStatus,
9 UninitializableFormat,
10 )
11 from ..revision import NULL_REVISION
12@@ -229,6 +230,10 @@
13 return ConnectionReset(message)
14 if message == 'The remote server unexpectedly closed the connection.':
15 return TransportError(message)
16+ m = re.match(r'unexpected http resp ([0-9]+) for (.*)', message)
17+ if m:
18+ # TODO(jelmer): Have dulwich raise an exception and look at that instead?
19+ return UnexpectedHttpStatus(path=m.group(2), code=int(m.group(1)), extra=message)
20 if message == 'protected branch hook declined':
21 return ProtectedBranchHookDeclined(msg=message)
22 # Don't know, just return it to the user as-is
23
24=== modified file 'breezy/git/tests/test_remote.py'
25--- breezy/git/tests/test_remote.py 2022-11-13 18:35:58 +0000
26+++ breezy/git/tests/test_remote.py 2022-11-15 16:32:03 +0000
27@@ -31,6 +31,7 @@
28 NoSuchTag,
29 PermissionDenied,
30 TransportError,
31+ UnexpectedHttpStatus,
32 )
33
34 from ...tests import (
35@@ -202,6 +203,18 @@
36 RemoteGitError(
37 '[Errno 104] Connection reset by peer')))
38
39+ def test_http_unexpected(self):
40+ self.assertEqual(
41+ UnexpectedHttpStatus(
42+ 'https://example.com/bigint.git/git-upload-pack',
43+ 403, extra=('unexpected http resp 403 for '
44+ 'https://example.com/bigint.git/git-upload-pack')),
45+ parse_git_error(
46+ 'url',
47+ RemoteGitError(
48+ 'unexpected http resp 403 for '
49+ 'https://example.com/bigint.git/git-upload-pack')))
50+
51
52 class ParseHangupTests(TestCase):
53
54
55=== modified file 'breezy/repository.py'
56--- breezy/repository.py 2022-11-13 20:26:24 +0000
57+++ breezy/repository.py 2022-11-15 16:32:03 +0000
58@@ -1627,6 +1627,11 @@
59 if source.supports_rich_root() != target.supports_rich_root():
60 raise errors.IncompatibleRepositories(source, target,
61 "different rich-root support")
62+ if not hasattr(source, '_serializer') or not hasattr(target, '_serializer'):
63+ if source != target:
64+ raise errors.IncompatibleRepositories(source, target, "different formats")
65+ return
66+
67 if source._serializer != target._serializer:
68 raise errors.IncompatibleRepositories(source, target,
69 "different serializers")

Subscribers

People subscribed via source and target branches